MySQL DATETIME - Daten des Vortages ermitteln?

  • Moin,


    im Moment bin ich ein wenig ratlos. Ich sammel in einer Datenbank einige Orte, gespeichert wird dazu das Datum und Uhrzeit des Eintrages (DATETIME, 2008-03-12 14:12:59).


    Wenn ich nun ermitteln will, welche Einträge heute gemacht wurden, ist das einfach:


    WHERE DATE(`eingetragen`) = DATE(NOW())


    Wenn ich jetzt aber zum Beispiel alle Einträge sehen will, die seit gestern (inkl. heute) gemacht wurden, funktioniert mein Ansatz hier nicht:


    WHERE `eingetragen` >= DATE_SUB(NOW(), INTERVAL 1 DAY)


    Ich verstehe nicht ganz, warum das nicht gehen will? Die Einträge vom gestrigen Tag werden nicht angezeigt.


    Setze ich allerdings INTERVAL 2 DAY (also Vorgestern), sehe ich die Einträge von gestern. Aber nicht die von vorgestern :D


    Hab ich da ein Verständnisproblem oder wo liegt der Hase begraben?

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • MySQL Doku:(http://dev.mysql.com/doc/refma…/date-and-time-types.html)

    Zitat

    ...'1999-00-00' oder '1999-01-00'. Wenn Sie Datumsangaben auf diese Weise speichern, können Sie nicht davon ausgehen, für Funktionen wie DATE_SUB() oder DATE_ADD korrekte Ergebnisse zu erhalten, denn diese erfordern vollständige Datumsangaben. (Wenn Sie Nullen in Daten nicht erlauben wollen, können Sie den SQL-Modus NO_ZERO_IN_DATE aktivieren.)


    Ich glaube das sich MySQL an der "0" stört: 2008-03-12. Wäre zu mindestens ein Ansatz wo der Fehler sein könnte.


    Viel Glück


    Rafael

    sizeof(void)

  • Ich speichere es explizit als DATETIME Feld, insofern dürfte es MySQL-Intern keine Probleme damit geben, da es ja hier Nullen auch vorsieht.


    Zumal - 03 ist der Monat, mir geht es aber um den Tag, das "Gestern". :D

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]
    » DevShack - die Website des freien Webentwicklers Boris ;)

  • Stimmt, die Uhrzeit ist ja auch mit drin. Das ganze sollte nach MySQL Doku dann auch so gehen:


    WHERE `eingetragen` >= SUBDATE(NOW(), 1)


    1 steht für einen tag..
    Mysql doku:

    Code
    1. mysql> SELECT SUBDATE('1998-01-02 12:00:00', 31);
    2. -> '1997-12-02 12:00:00'

    sizeof(void)

  • Der Fehler lag bei mir - meine Queries waren schon korrekt, meine Testeinträge rein theoretisch auch.


    Nur - NOW minus 1 Tag ist halt der 12.03.2008 um 22 Uhr ... sprich Datensätze dieses Tages, die früher geschrieben wurden, werden logischerweise dann nicht angezeigt. :D


    Danke für eure Hilfe ;)

    My software never has bugs. It just develops random features ... :D
    [FONT="System"]
    » DevShack - die Website des freien Webentwicklers Boris ;)