Datumsvergleich in MySQL
Franz Heinrich
- php
0 Viennamade0 Franz Heinrich0 Ilja
0 Tom0 fastix®
Hallo zusammen!
Ich habe in einer Datenbank lauter Daten als DATE (YYYY-MM-DD) abgespeichert. Nun möchte ich alle Datensätze raussortieren, dessen Datum vor oder nach einem bestimmten Datum liegen. Leider funktioniert das nicht, so wie ich mir das vorgestellt habe, indem ich ein ganz einfach > oder < Vergleich mache.
--
...
$heute = date("Y-m-d");
$sql_abfrage = mysql_query("SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE next_invoice<'$heute'") or die(mysql_error());
$werte = mysql_fetch_array($sql_abfrage);
...
--
Dabei kommt immer ein Syntaxfehler. Wie kann ich das sonst vergleichen? Das Vergleichs-Datum muss nicht zwingend das heutige sein!
Vielen Dank
Franz
Hallo zusammen!
$heute = date("Y-m-d");
$sql_abfrage = mysql_query("SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE next_invoice<'$heute'") or die(mysql_error());
$werte = mysql_fetch_array($sql_abfrage);
...Dabei kommt immer ein Syntaxfehler.
Probiere doch mal 'SELECT idate FROM tabelle WHERE idate >= '1997-05-05';'.
Now() steht für 'Jetzt' (sorry) und ich denke, daß DATE_FORMAT() Now() als Parameter verträgt. Siehe Now() und Date_Format hier: http://dev.mysql.com/doc/mysql/de/Date_and_time_functions.html#IDX1259
Beste Grüße
Viennamade
Hallo
Probiere doch mal 'SELECT idate FROM tabelle WHERE idate >= '1997-05-05';'.
Geht nicht! (Hab natürlich meine Bezeichnungen genommen)
Now() steht für 'Jetzt' (sorry) und ich denke, daß DATE_FORMAT() Now() als Parameter verträgt. Siehe Now() und Date_Format hier: http://dev.mysql.com/doc/mysql/de/Date_and_time_functions.html#IDX1259
Versteh den Zusammenhang nicht ganz, liegt vielleicht aber auch an der Uhrzeit...
Gruss
Franz
yo,
Geht nicht! (Hab natürlich meine Bezeichnungen genommen)
geht nicht, gibt es nicht. immer mit angeben, ob eine fehlermeldung kommt und welche das ist, z.b. mit der funktion mysql_error(). in dem oben genannten beispiel könnte es reine syntaktische fehler sein. versuch mal:
SELECT idate
FROM tabelle
WHERE idate >= NOW();
Ilja
Hello,
Ich habe in einer Datenbank lauter Daten als DATE (YYYY-MM-DD) abgespeichert. Nun möchte ich alle Datensätze raussortieren, dessen Datum vor oder nach einem bestimmten Datum liegen. Leider funktioniert das nicht, so wie ich mir das vorgestellt habe, indem ich ein ganz einfach > oder < Vergleich mache.
$heute = date("Y-m-d");
$sql_abfrage = mysql_query("SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE next_invoice<'$heute'") or die(mysql_error());
$werte = mysql_fetch_array($sql_abfrage);
Im zweifelsfall geht der Vergleich
$heutestamp = time(); ## da sollte man natürlich genau überlegen, ob man "jetzt" will oder besser heute Morgen oder 12:00 Mittag.
SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE unixtimestamp(next_invoice)<$heutestamp
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Moin!
Aus dem, was da zu lesen ist geht die Fehlerursache nicht hervor.
Mache aus:
$sql_abfrage = mysql_query("SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE next_invoice<'$heute'") or die(mysql_error());
$sql_abfrage = "SELECT uid, entries, order, next_invoice, price FROM billing_entries WHERE next_invoice<'$heute'";
$sql_result = mysql_query($sql_abfrage) or die (echo "<hr>".mysql_error()."<hr>");
$werte = mysql_fetch_array($sql_result);
Und verrate uns dann noch mal, was als Fehler ausgegeben wird.
Ferner, ob MySQL oder PHP den Syntaxfehler meldet. Sollte es MySQL sein, dann den mysql_error().
Natürlich kannst Du dir jetzt auch mit echo $sql_abfrage das ausgeben lassen, was Du der Datenbank übergibst... das spricht oft Bände und ich bin nicht im klaren darüber, warum immer soviele meinen, die Abfrage in denselben Befehl zusammenbauen zu müssen, in dem sie dieselbe an die Datenbank schicken.
Darüber hinaus: Deine Variablen sind falsch benannt. Das führt zu keiner Fehlermeldung, aber zu Deiner eigenen Verwirrung.
Vergleiche bitte auch: </archiv/2004/3/76197/#m438820>
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®