Andreas: SQL-String mit Datumsdifferenz als Where-Kriterium

Hallo,
habe folgender Datenbankzugriff im PHP-Script:
$request = mysql_query("
      SELECT t.ID_TOPIC, t.ID_BOARD, m.subject, m.posterName, m.ID_MEMBER, m.posterTime
      FROM {$db_prefix}topics as t, {$db_prefix}messages as m
      WHERE (FIND_IN_SET($ID_MEMBER,t.notifies) != 0
      AND m.ID_MSG=t.ID_FIRST_MSG) Order By t.ID_TOPIC DESC Limit $start, 15");
Das Datum m.posterTime liegt als Unix-Time vor, in folgender Art: 1073390789
Wie kann ich die Abfrage ändern, dass z.B. nur Beiträge der letzten 30 Tage dargestellt werden?
Habe dazu die Variable $anz, als Angabe für die letzten XX Tagen.

Gruß Andreas

  1. Hallo Andreas,

    Das Datum m.posterTime liegt als Unix-Time vor, in folgender Art: 1073390789
    Wie kann ich die Abfrage ändern, dass z.B. nur Beiträge der letzten 30 Tage dargestellt werden?
    Habe dazu die Variable $anz, als Angabe für die letzten XX Tagen.

    UNIX-Timestamps zählen die Anzahl der Sekunden seit dem 1. Januar 1970, O:00:00 Uhr.

    1 Minute hat 60 Sekunden
    1 Stunde hat 60 Minuten
    1 Tag hat 24 Stunden

    Wieviele Sekunden sind in den letzten XX Tagen vergangen?

    Anzahl Sekunden := XX * 24 * 60 * 60

    Freundliche Grüsse,

    Vinzenz

    1. Hallo,

      übrigens in SQL heißt "!=0" "<>0"

      Grüße, Matthias

      1. Hallo,

        übrigens in SQL heißt "!=0" "<>0"

        Und warum funktioniert es dann?
        Code ist vom Script Progger YaBBSE, nicht von mit, also sollte es eigentlich auch gültig sein?!

        Andreas

        1. Trotzdem hallo,

          ja anscheinend geht beides, jetzt frage ich mich nur nach dem Unterschied...

          Grüße, Matthias

          1. yo,

            ja anscheinend geht beides, jetzt frage ich mich nur nach dem Unterschied...

            ganz offensichtlich ist es das gleiche, wenn man mal von der schreibweise absieht, frei nach dem motto gleichheit, brüderlichkeit.....

            Ilja

    2. Hallo,

      UNIX-Timestamps zählen die Anzahl der Sekunden seit dem 1. Januar 1970, O:00:00 Uhr.
      Anzahl Sekunden := XX * 24 * 60 * 60

      Das ist mir auch bekannt, nur wie binde ich das in die Abfrage mit ein? kann ich einfach ein <= machen oder muss ich das Datum umformen oder ??
      Bitte ein bisschen mehr Hilfe.

      Gruß Andreas

      1. Hallo Andreas,

        Hallo,

        UNIX-Timestamps zählen die Anzahl der Sekunden seit dem 1. Januar 1970, O:00:00 Uhr.
        Anzahl Sekunden := XX * 24 * 60 * 60
        Das ist mir auch bekannt, nur wie binde ich das in die Abfrage mit ein? kann ich einfach ein <= machen oder muss ich das Datum umformen oder ??

        Das MySQL-Handbuch gibt einiges an Informationen dazu her:

        <zitat>

        MySQL wandelt einen Datums- oder Zeitwert automatisch in eine Zahl um, wenn der Wert in einem numerischen Zusammenhang benutzt wird, und umgekehrt. http://dev.mysql.com/doc/mysql/de/Date_and_time_types.html

        </zitat>

        und schau Dir bitte den ersten Benutzerbeitrag auf http://dev.mysql.com/doc/mysql/de/Date_and_time_types.html an.

        Bitte ein bisschen mehr Hilfe.

        Handbuch lesen ist meist eine ausgezeichnete Hilfe :-)

        Freundliche Grüsse,

        Vinzenz