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?


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';

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.



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';

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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.