Alle Datensätze aus Datenbank löschen wo älter wie 5 Stunden sind

LoMo

Erfahrenes Mitglied
Hi @ all

Ich hab heute irgendwie voll die Denkblockade :D bräuchte deshalb mal kurz eure Hilfe.

Mein Problem:

Ich hab eine Datenbanktabelle, in der alle Datensätze wo älter wie 5 Stunden sind gelöscht werden sollen.

In der Tabelle hab ich Registrierungs_Datum und Registrierungs_Uhrzeit, welche überprüft werden sollen, ob sie schon älter wie 5 Stunden sind und anschließend falls der Fall anfällt der ganze Datensatz gelöscht werden soll.

Weiss vielleicht jemand wie ich das machen könnte ? Ich hab heute irgendwie Denkengpass :)

mfg lomo
 
In welchem Format liegen den die beiden Zeitangaben vor? Eigentlich machst du das direkt mit dem SQL stmt in der WHERE Klausel.

$checkTime = time() - 5h;
DELETE ... WHERE time < $checkTime

Nur einmal als Ansatz.
 
Erstmal vielen Dank für die schnelle Hilfe

Registrierungs_Datum >>> Date
Registrierungs_Uhrzeit >>> Time

Dein SQL-Befehl ist nicht ganz richtig weil wenn du nur die Uhrzeit abprüfst löscht er nicht alle Sätze die älter wie 5 Stunden sind. z.B. ich ruf die Funktion um 15 uhr auf dann löscht er alles was kleiner 10 Uhr, aber er löscht nicht die Datensätze, wo z.B. einen Tag älter sind aber um 14 uhr erfasst wurden.

mfg lomo
 
Code:
DELETE FROM Tabelle 
WHERE NOW()>DATE_ADD(DATE_ADD(`Registrierungs_Datum`, 
        INTERVAL `Registrierungs_Uhrzeit` HOUR_SECOND),
    INTERVAL 5 HOUR))
Das innere DATE_ADD könntest Du Dir sparen, wenn Du in einem Feld als DATETIME speicherst.

Für den Fall, dass ich den Zusammenhang des Problems richtig interpretiere:
Vermutlich solltest Du dem WHERE noch eine weitere Bedingung hinzufügen, die prüft, ob der Account auch noch nicht aktiviert ist, sonst würdest Du ja die langjährigen ordnungsgemäß registrierten User löschen.

Gruß hpvw

PS: nicht "wo älter wie ...", sondern "die älter als ..."
 
Zurück