Now() ...

loki2002

Erfahrenes Mitglied
Hallo,

folgenden query moechte ich zu db machen.. aber irgendwie will das nicht so ganz.

PHP:
"DELETE from tabelle WHERE zeit >= NOW()-INTERVAL 24 HOURS"

das Feld Zeit ist als 'timestamp' in der db gesetzt.. jetzt wie man ja oben erkennen kann.. moechte ich mit NOW() checken welche eintraege 24 H alt sind und diese loeschen lassen.. das tut es aber leider nicht... ;) .. kann mir jemand sagen was falsch am query ist?

Danke
 
wenn Du die Einträge löschen willst, die älter als 24h sind, dann ist deren Timestamp natürlich KLEINER (oder gleich) als "now() - 24STUNDEN"

ich würde diesen Timestamp aber vor dem Query berechnen, und dann im Query nur eine Variable verwenden:
PHP:
$alt = now() - 86400; // 24 * 60 * 60 = 24 Stunden in Sekunden
$query = "DELETE from tabelle WHERE zeit <= $alt";


Dunsti

[edit]
ach ja, fast vergessen: der Timestamp in PHP und der in MySQL sind NICHT identisch !!!!
am besten, Du speicherst einfach einen PHP-Timestamp in einem Integer-Feld ;)
[/edit]
 
Danke @Dunsti.

werde es wohl auch so machen muessen.. schade, dachte es wuerde im query irgendwie funktionieren.

:)


[edit]

Kommando zurueck.. habs doch noch geloest.. das ganze hatte nur ein Denkfehler .. anstelle von HOURS muss es HOUR heissen.. dann klappt es auch.


PHP:
"DELETE from tabelle WHERE zeit <= NOW()-INTERVAL 24 HOUR"

[/edit]
 
Zuletzt bearbeitet:
Hallo,
ich verscuhe ähnliches. Bisher jedoch ohne erfolg, irgenwie klappt das nicht.

Code:
DELETE FROM su_top_v WHERE time_vote <= NOW()-INTERVAL 3 HOUR

time_vote ist auch hier ein Timestamp.
 
Versuche es mal mit der Funktion DATE_SUB.
Die verkürzte Schreibweise funktioniert nicht in jeder MySQL-Version.

Gruß hpvw

PS: Wir reden hier immer noch von einem MySQL-Timestamp und keinem Unix-Timestamp.
 

Neue Beiträge

Zurück