Jak używać operatora większe niż z datą?

106

Nie mam pojęcia, co się tutaj dzieje. Oto zapytanie prosto z phpMyAdmin:

SELECT * FROM `la_schedule` WHERE 'start_date' >'2012-11-18';

Ale konsekwentnie zwracane są wszystkie rekordy w tabeli, w tym te z datą rozpoczęcia 01.11.2012. Co daje?

Clinton J.
źródło
1
Czy Twoja kolumna data_początkowa zawiera datę lub znacznik czasu?
Shamis Shukoor

Odpowiedzi:

191

powiększyłeś start_dateo pojedynczy cudzysłów, który stał się ciągiem znaków, użyj backtickzamiast tego

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
John Woo
źródło
1
co się stanie, jeśli jego sygnatura czasowa?
ichimaru
Warto zauważyć, że MySQL wydaje się nieco wybredny, jeśli chodzi o format daty; podczas gdy albo 2019/02/08 21:04:07 lub 2019-02-08 21:04:07 daje oczekiwany wynik, 02-08-2019 21:04:07, używając amerykańskiego formatu daty, rzuca znacznie szerszą sieć .
David A. Grey
22

W swoim oświadczeniu porównujesz ciąg o nazwie data_początkowa z godziną.
Jeśli data_początkowa jest kolumną, powinna nią być

 
  SELECT * FROM `la_schedule` WHERE start_date >'2012-11-18';
 

(bez apostrofu) lub


SELECT * FROM `la_schedule` WHERE `start_date` >'2012-11-18';

(z grawerami).

Mam nadzieję że to pomoże.

Klęczeć przed Zod
źródło
12

Spróbuj tego.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
Faizan Khattak
źródło
2

W moim przypadku moja kolumna była datą i godziną i zawierała wszystkie rekordy. To, co zrobiłem, to uwzględnienie czasu, patrz poniższy przykład

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
beatusfk
źródło
0

Próbowałem, ale powyżej nie działałem po badaniach znalezionych poniżej rozwiązania.

SELECT * FROM my_table where DATE(start_date) > '2011-01-01';

Nr ref

Suresh Kerai
źródło