kerki: Nächstes Datum ausgeben

Beitrag lesen

Bongú!

lasse mir über folgenden Befehl das nächstliegende Datum aus einer MySQL-Datenbank ausgeben:

$abfrage = "SELECT * FROM $tabelle WHERE UNIX_TIMESTAMP(datum_sort)>UNIX_TIMESTAMP(curdate()) LIMIT 0,1";

Das Feld 'datum_sort' hat folgenden Inhalt:
2002-02-09
2002-05-11
2002-06-01

Leider funktioniert das nicht richtig, denn es wird nicht das Datum
2002-05-11, sondern das Datum 2002-06-01 als nächstliegendes Datum angegeben.
Hat das eventuell irgendwas mit UNIX_TIMESTAMP(datum_sort) zu tun? Erwartet UNIX_TIMESTAMP ein anderes Datumformat?

Lass dir doch die beiden Zeitstempel im Select-Teil anzeigen, dann siehst du ja, was verglichen wird. ;-)

Dein Problem dürfte eine ganz andere Ursache haben:

Es fehlt das ORDER BY.

Ohne die Ausgabe nach dem Datumsfeld zu sortieren, hast du auf die Reihenfolge, in der die Datensätze zurückgeliefert werden, nicht den geringsten Einfluss.

Folgendes sollte das gewünschte Ergebnis liefern:

SELECT *
 FROM $tabelle
 ORDER BY datum_sort ASC
 WHERE UNIX_TIMESTAMP(datum_sort)>UNIX_TIMESTAMP(curdate())
 LIMIT 0,1;

Sahha,

kerki