Nur bestimmte Timestamps aus der DB löschen

D

Dieterkalif

Hallo Leute ,
ich benötige eure Hilfe in folgender Sache:
Ich habe eine PHP datei (clear.php) die , bei aufrufen der datei , eine bestimmte Tabelle in der Datenbank leert. In meinem Fall wäre dies die Tabelle "cmd_clicks".
In der Tabelle befindet sich eine Spalte namens "log_time" wo die Timestamps gespeichert werden , wenn jemand z.b einen neuen Artikel anlegt.

Ich möchte meine "clear.php" datei allerdings nicht dazu nutzen ,bei aufrufen, die komplette Tabelle zu löschen sondern nur Einträge dessen Timestamp unter 12 stunden , oder mehr , liegt. Mein Problem ist das ich nicht weiss wie ich so etwas hinbekomme. Ich habe hier im Forum schonmal geschaut aber kein passendes Thread gefunden was mir weiterhelfen konnte. Zurzeit läuft das ganze noch so:
PHP:
.. $SQL = "TRUNCATE TABLE `cmd_clicks` "; ..

Ich hoffe ihr könnt mir weiterhelfen :)
 
Hallo,
der nachstehende ansatz löscht (ACHTUNG in Oracle), einträge die älter als 1Stunde sind.
SQL:
delete 
from deine_tabelle
where log_time <= current_timestamp - 1/24

Evtl. hilft das als Ansatz. Du mußt auf jeden Fall das DELETE verwenden da TRUNCATE gnadenlos die gesamte Tabelle leer macht (Außer es bestehen nocht referenzen auf andere Tabellen).
See: http://dev.mysql.com/doc/refman/5.0/en/truncate.html

Hoffe das hilft Dir weiter.

Grüße
 
Truncate leert deine ganze Tabelle, was du suchst wird DELETE sein.
PHP:
$time = time()-(60*60*12);
$del = "DELETE FROM tablename WHERE log_time <= ".$time;
Das sollte funktionieren :)
edit:
time() gibt den aktuellen Timestamp wieder. Davon werden 60sek = 1min, 1min*60 = 1h, 1h*12 = 12h abgezogen.
 

Neue Beiträge

Zurück