dedlfix: Löschen aller Datensätze ab bestimmten Alter

Beitrag lesen

Hi!

Beim Erstellen dieser Datensätze ermittle ich mit php den aktuellen Unix-Zeitstempel-Wert ($now=time();)und trage diese Zahl (gemeinsam mit den anderen Daten) als "erstellt" in die Tabelle ein.

Warum? MySQL bietet - wie jedes vernünftige rDBMS - brauchbare Funktionen, die mit Datums- und Zeitangaben umgehen können.

Genau, ein NOW() ins Statement und alles ist erledigt. Kein Erzeugen eines Timestamps und Umwandeln in ein von MySQL erkanntes Datums- und Zeit-String-Format oder FROM_UNIXTIME()-Aufrufe. Und es geht unter Umständen noch kürzer, wenn man die eingebaute Magie des TIMESTAMP-Feldtyps nutzen kann.

(ich habe in JEDER Tabelle nämlich auch einen current-time Zeitstempel, der automatisch miterstellt wird und der somit den Zeitpunkt der erstellung wiedergibt),

Ah, da ist wohl also doch schon so ein TIMESTAMP-Feld vorhanden?

Warum dann also den Extra-Aufwand mit der Zeitermittlung in PHP usw.? Welches Datenformat hat dieser "Zeitstempel"?

Datenformat klingt so verwechselbar. Besser wäre vom Feldtyp zu sprechen. Formate kann man ja beispielsweise in ein String-Feld beliebig viele schreiben.

DELETE FROM warteliste

WHERE TIMESTAMPDIFF(HOUR, {DEIN_CURRENT_TIME_ZEITSTEMPEL_HIER}, SYSDATE()) > 2

  
Ich finde ja das Rechnen mit INTERVAL einfacher zu lesen: WHERE feld < NOW() - INTERVAL 2 HOUR  
  
  
Lo!