MYSQL Ausagbe nach Vergangeheit und Zukunft sotieren

DeepZone

Grünschnabel
Moin zusammen,

Ich habe ein kleines Problem und weiss nicht wie ich es lösen soll.
in einer Datenbank werden Termin abgelegt das Datumsformat ist d.m.Y

Das auslesen und darstellen dieser Termine klapp auch soweit.

Der Aufbau

Zukünftiger Termin - Ausgabe
Vergangene Termine - Ausgabe

Nun habe ich mir folgenden Code ausgedacht :)

Kommende Termine
PHP:
$jetzt = date("d.m.Y"); 
SELECT * FROM events WHERE datum >= '$jetzt' ORDER BY datum DESC

Alte Termine

PHP:
$jetzt = date("d.m.Y"); 
SELECT * FROM events WHERE datum <= '$jetzt' ORDER BY datum DESC

Klappt soweit auch, aber

Termine im Folgejahr werden in den alten Termin angezeigt sobald der Monat in diesem Jahr vergangen ist... Das heisst also Termine im Dezember 2012 ab heute werden richtig dargestellt. Termine im Januar 2012 werden als alt dargestellt.

Der nächste Punkt ist das Termine vom aktuellem Tag in beiden Kategorien angezeigt werden.

So war das nicht gedacht :) Hat Irgend jemand einen Rat ?
Danke schonmal im Vorraus.

Greetz Deep
 
Du vergleichst einen String. Der String beginnt mit dem Tag. Ergo wird zuerst nach Tag, dann nach Monat und am Schluss nach Jahr verglichen.

Das MySQL Format ist mWn 'Y-m-d H:i:s'. Y--m-d ist als String sortierbar, denn es wird zuerst nach Jahr, dann nach Monat und erst am Schluss nach Tag sortiert.

Ich empfehle dir dein Feld in der DB entweder als Datum-Format (DATE) zu definieren oder das Datum als Timestamp abzulegen. Aber ein Datum in einem eigenen Format in ein VARCHAR-Feld zu setzen ist das schlechteste was du machen kannst.

Du kannst so auch mit Datums rechnen, vergleichen, sortieren etc.



Hier noch ein Link wie man aus PHP-Datum zu MySQL-Datum kommt und umgekehrt
PHP MySQL Datumskonvertierung
 
Zurück