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?


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

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.



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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.