Probleme mit DATE_SUB, INTERVAL und NOW()

PHP-Fan

Erfahrenes Mitglied
Hallo,

ich habe einen kleinen Logikfehler in meinem Script den ich aktuell nicht lösen kann. Ich möchte gerne, dass nur Datensätze die älter als 12 Stunden sind gelöscht werden. Es werden aber immer alle Datensätze gelöscht egal wie alt die sind. Woran liegt das?

PHP:
$sSqlDeleteOldIps = 'DELETE FROM `abc_clicks` WHERE DATE_SUB(`term`, INTERVAL 12 HOUR) < NOW()';

Die Spalte `term` wird als DATETIME gespeichert.

Um Missverständnisse vorzubeugen hier eine Ausgabe damit ihr sehen könnt, welche Daten da rauskommen.

Code:
SELECT * , DATE_SUB( `term` , INTERVAL 12 HOUR ) , NOW( ) 
FROM `abc_clicks` 
WHERE DATE_SUB( `term` , INTERVAL 12 HOUR ) < NOW( )

=

Unbenannt-3.jpg

Vielen Dank für die Hilfe.
 
Zuletzt bearbeitet:
Jepp, da ist ein Missvwerständnis deinerseits.

Was machst du: Du zählst vom Datum in der Tabelle 12 Stunden ab. Diesen Reduzierten Timestamp vergleichst du mit NOW(). Ergo wird alles gelöscht was im Feld term jünger ist als [Jetzt + 12 Stunden]

Du willst dein Date-Diff auf das NOW() anwednen

SQL:
WHERE term < DATE_SUB( NOW() , INTERVAL 12 HOUR )
 
Zuletzt bearbeitet von einem Moderator:

Neue Beiträge

Zurück