Schau doch mal im Manual nach was current_date() macht:
MySQL :: MySQL 5.5 Reference Manual :: 12.7 Date and Time Functions
Dann sollte dir bewusst werden, dass Du hier Äpfel mit Birnen vergleichst wenn deine Spalte vom Typ DATETIME ist. Denn
auch
Wenn Du damit einen Vergleich machen willst, musst Du deine Zeitangabe in ein mit current_date() kompatibles Format bringen. Z.B. per DATE_FORMAT():
Da ich den MySQL-Vergleichen mit Datums- und Zeitangaben nie wirklich traue wechsle ich für solche Vergleiche auch gerne zu reinen Zahlen. Man kann entweder das Datum mal ohne jegliche Zeichen dazwischen schreiben, also
oder auch einen UNIX-Zeitstempel dafür nutzen. Dann würde es für dich vlt. auch etwas verständlicher werden:
Dabei werden nun 2 reine Zahlenwerde verglichen, z.B. (einfach ausgedrückt):
Merke: Achte immer auf die Formate die Du miteinander vergleichst.
MySQL :: MySQL 5.5 Reference Manual :: 12.7 Date and Time Functions
Dann sollte dir bewusst werden, dass Du hier Äpfel mit Birnen vergleichst wenn deine Spalte vom Typ DATETIME ist. Denn
Code:
2013-05-30 22:59:01 ist nicht gleich 2013-05-30
auch
Code:
2013-05-30 22:59:01 ist nicht größer als 2013-05-30
Wenn Du damit einen Vergleich machen willst, musst Du deine Zeitangabe in ein mit current_date() kompatibles Format bringen. Z.B. per DATE_FORMAT():
Code:
SELECT ... WHERE DATE_FORMAT(Datum,'%Y-%m-%d') > current_date()
Da ich den MySQL-Vergleichen mit Datums- und Zeitangaben nie wirklich traue wechsle ich für solche Vergleiche auch gerne zu reinen Zahlen. Man kann entweder das Datum mal ohne jegliche Zeichen dazwischen schreiben, also
Code:
20130530225901
oder auch einen UNIX-Zeitstempel dafür nutzen. Dann würde es für dich vlt. auch etwas verständlicher werden:
Code:
SELECT ... WHERE UNIX_TIMESTAMP(Datum > UNIX_TIMESTAMP()
Dabei werden nun 2 reine Zahlenwerde verglichen, z.B. (einfach ausgedrückt):
Code:
2 > 1
Merke: Achte immer auf die Formate die Du miteinander vergleichst.