Nächstes Datum ausgeben
combo
- datenbank
0 kerki0 combo0 Klaus Mock0 kerki
Hallo,
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?
Welchen Befehl muss ich verwenden, damit mein Datumformat YYYY-MM-DD richtig verwendet wird?
Das ganze könnt Ihr Euch unter http://www.combo-speciale.de anschauen, unter Termine steht die ganze Datenbank und rechts in der Box immer das nächstfolgende Datum.
Vielen Dank für die Hilfe,
Combo
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
Hallo,
Lass dir doch die beiden Zeitstempel im Select-Teil anzeigen, dann siehst du ja, was verglichen wird. ;-)
wie denn? ;-)
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;
Leider funktioniert das dann überhaupt nicht mehr! :-(
Hast Du eventuell noch ne andere Idee?
MfG, Combo
Hallo,
SELECT *
FROM $tabelle
ORDER BY datum_sort ASC
WHERE UNIX_TIMESTAMP(datum_sort)>UNIX_TIMESTAMP(curdate())
LIMIT 0,1;
Leider funktioniert das dann überhaupt nicht mehr! :-(
Hast Du eventuell noch ne andere Idee?
Ja, schreib das Statement richtig, denn oft kommt es einfahc nur auf die richtige Reigenfolge an:
SELECT *
FROM $tabelle
WHERE UNIX_TIMESTAMP(datum_sort)>UNIX_TIMESTAMP(curdate())
ORDER BY datum_sort ASC
LIMIT 0,1;
Ja ja, die 'Sündachs', das ist so eine Sache;-)
'Literaturhinweise':
http://www.mysql.com/doc/S/E/SELECT.html
Grüße
Klaus
Bongú!
Ja ja, die 'Sündachs', das ist so eine Sache;-)
Wenn ich schon 'mal aus dem Gedächtnis zitiere. %-[
Sind 10 "Vater unser" genug zur Buße?
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
</faq/#Q-09d> Du sollst keine ungetesteten Sachen posten!
In diesem Sinne...
Sahha!
kerki
Hallo,
Ja ja, die 'Sündachs', das ist so eine Sache;-)
Wenn ich schon 'mal aus dem Gedächtnis zitiere. %-[
Na ja, kann locker mal passieren, aber eigentlich wollet ich ja combo darauf hinweisen, daß es auch anderswo Dokumente gibt in denen man nachlesen kann, wie mySQl funktioniert, und warum etwas nicht funktionieren kann. 'Self ist der Mensch' sollte es eigentlich heißen.
Grüße
Klaus