löschen von Datenbank einträgen die älter als x sind

hups1803

Erfahrenes Mitglied
Hallo,

folgendes problem:

habe eine datenbank in der sich ein Feld mit den Namen :datum befindet.
dort trage ich mit: NOW() die zeit ein,
die sieht dann so aus :2011-07-30 18:41:04

nun möchte ich alle einträge löschen die älter als 5 tage sind ,habe es so versucht:

PHP:
$sql = "delete FROM ".MPREFIX."floh WHERE datum <= date_format(date_sub(now(),interval 5 day),'%Y-%m-%d %H:%i:%s');";
mysql_query($sql) OR die(mysql_error());

leider macht er nur nix er löscht nicht.

Jemand eine Idee****

komisch wenn es nur 2 eintrage sind löscht er den ältesten bei 3 garnix

das feld ist `datum` timestamp NULL DEFAULT '0000-00-00 00:00:00', so angelegt
 
Zuletzt bearbeitet:
Wenn du einen unix timestamp einträgst, wirst du mit den datumsfunktionen von MySQL nicht weit kommen.
Das timestamp format von MySQL ist ein komplett anderes als das von Unix.

versuchs mal so:
PHP:
$sql = "delete FROM ".MPREFIX."floh WHERE datum <= ".(time()-60*60*24*5);
 
oh vertan ich schreibe das datum mit NOW() in die db

dein beispiel geht nicht liegt wohl an der falschen vorgabe sorry wenn du mir bitte nochmal helfen könntest
 
Dann ist dein query an sich richtig, wobei das date_format unnötig ist, da date_sub bereits passend ein datum zurück gibt.

Wobei du daran denken musst, dass das ganze sekundengenau abläuft. Wenn du das query also um 18:32:53 ausführst, wird auch nur alles vor der jeweiligen urzeit gelöscht.

Wenn du das ganze jeweils an der tagesgrenze festmachen willst (00:00:00) mach einfach noch n date() drum.
Code:
date(date_sub(now(), interval 5 days)
 
meinst du so ****

$sql = "delete FROM ".MPREFIX."floh WHERE datum <= date(date_sub(now(), interval 5 days),'%Y-%m-%d %H:%i:%s'); ";
 
Zurück