Wie verwende ich mehr als Operator mit Datum?

106

Keine Ahnung was hier los ist. Hier ist die Abfrage direkt von phpMyAdmin:

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

Ich erhalte jedoch regelmäßig alle Datensätze in der Tabelle zurück, einschließlich der Datensätze mit dem Startdatum 2012-11-01. Was gibt?

Clinton J.
quelle
1
Ist Ihre Spalte start_date vom Typ Datum oder Zeitstempel?
Shamis Shukoor

Antworten:

190

Sie haben ein start_dateeinfaches Anführungszeichen hinzugefügt, wodurch es zu einer Zeichenfolge wird. Verwenden Sie backtickstattdessen

SELECT * FROM `la_schedule` WHERE `start_date` > '2012-11-18';
John Woo
quelle
1
Was passiert, wenn sein Zeitstempel?
Ichimaru
Es ist anzumerken, dass MySQL in Bezug auf das Datumsformat etwas wählerisch erscheint. Während entweder 2019/02/08 21:04:07 oder 2019-02-08 21:04:07 das erwartete Ergebnis liefert, wirft 02-08-2019 21:04:07 unter Verwendung des US-Datumsformats ein viel breiteres Netz .
David A. Gray
22

In Ihrer Anweisung vergleichen Sie eine Zeichenfolge mit dem Namen start_date mit der Uhrzeit.
Wenn start_date eine Spalte ist, sollte es entweder sein

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

(kein Apostroph) oder


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

(mit Backticks).

Hoffe das hilft.

Knie vor dem ZOD
quelle
12

Versuche dies.

SELECT * FROM la_schedule WHERE `start_date` > '2012-11-18';
Faizan Khattak
quelle
2

In meinem Fall war meine Kolumne eine Datumszeit, die mir immer wieder alle Aufzeichnungen gab. Was ich getan habe, ist Zeit einzubeziehen, siehe Beispiel unten

SELECT * FROM my_table where start_date > '2011-01-01 01:01:01';
beatusfk
quelle
0

Ich habe versucht, aber oben nicht zu arbeiten, nachdem die Forschung unter der Lösung gefunden hat.

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

Ref

Suresh Kerai
quelle