Franz Heinrich: Datumsvergleich in MySQL

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

  1. 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

    1. 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

      1. 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

  2. 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

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. 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®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.