zwackel: komplizierte zeitrechnung...

Hallo, ich verzweifle zur Zeit an folgender Routine:

Ich möchte (quasi ala ebay ;) ) nur Einträge auswählen, die in den nächsten 24 Stunden enden.
Timestamp kam als Feld für mich nicht in Frage, da der Wert mit dem ich rechnen muss unverändert sein soll (es geht um ein Abholdatum).

Einträge, die einfach nur neuer sind als das aktuelle Datum, sind kein Problem- jedoch habe ich hierbei keine Eingrenzung bei der nur die vom aktuellen Datum zu berechnenden 24 Stunden als Grundlage dienen.

Hier der (nicht funkionierende Select):

$sql = "SELECT * from frachtangebote WHERE abholdatum BETWEEN DATE_ADD(NOW(), INTERVAL 1 DAY) AND abholdatum";

Das Feld "abholdatum" liegt in der db als Datetime-Typ vor.
Also, wie gesagt, sollen alle Datensätze geholt werden, beim denen das Abholdatum ausgehend vom aktuellen Datum bis (!) zu 24 Stunden in der Zukunft liegt, aber halt nicht darüberhinaus.

Wie grenze ich das Ganze ein?

  1. Hallo,

    Also, wie gesagt, sollen alle Datensätze geholt werden, beim denen das Abholdatum ausgehend vom aktuellen Datum bis (!) zu 24 Stunden in der Zukunft liegt, aber halt nicht darüberhinaus.

    Wie grenze ich das Ganze ein?

    im Wesentlichen mit Mathematik, vierte Grundschulklasse:

    datum > now() and datum < now() + interval 24 hour

    Gruß, Hannes.

  2. Hallo

    Hier der (nicht funkionierende Select):

    $sql = "SELECT * from frachtangebote WHERE abholdatum BETWEEN DATE_ADD(NOW(), INTERVAL 1 DAY) AND abholdatum";

    Also, wie gesagt, sollen alle Datensätze geholt werden, beim denen das Abholdatum ausgehend vom aktuellen Datum bis (!) zu 24 Stunden in der Zukunft liegt, aber halt nicht darüberhinaus.

    Verstehe ich Dich richtig:
    a) Deine Untergrenze ist also der aktuelle Zeitpunkt.
    b) Deine Obergrenze ist aktueller Zeitpunkt plus 24 Stunden.

    a) Den aktuellen Zeitpunkt erhältst Du in MySQL (was Du wohl verwendest) mit dem
       Aufruf von NOW()
    b) Den Zeitpunkt der Obergrenze erhältst Du somit mit
       DATE_ADD(NOW(), INTERVAL 1 DAY)

    Warum setzt Du in Deine WHERE-Klausel falsche Werte für Unter- und Obergrenze ein?

    Freundliche Grüße

    Vinzenz