tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
4
ZUGRIFFE
2296
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von LoMo
    LoMo LoMo ist offline Benutzer
    Registriert seit
    Jun 2004
    Beiträge
    384
    Hi @ all

    Ich hab heute irgendwie voll die Denkblockade 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
     

  2. #2
    StormYus StormYus ist offline Mitglied Silber
    Registriert seit
    Jan 2003
    Ort
    Hude
    Beiträge
    51
    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.
     

  3. #3
    Avatar von LoMo
    LoMo LoMo ist offline Benutzer
    Registriert seit
    Jun 2004
    Beiträge
    384
    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
     

  4. #4
    Registriert seit
    Apr 2002
    Ort
    HH
    Beiträge
    3.224
    Code :
    1
    2
    3
    4
    
    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 ..."
     
    Warum gibt (fast) keiner im Datenbankforum an, welches DBMS er benutzt?
    Ich gehe im Zweifelsfall ohne Nachfrage von MySQL > 4.1 i.V.m. PHP aus.
    Gewöhnt euch bitte auch an, die Fehlermeldung von mysql_error() zu posten.

  5. #5
    Avatar von LoMo
    LoMo LoMo ist offline Benutzer
    Registriert seit
    Jun 2004
    Beiträge
    384
    Optimal. Vielen vielen Dank

    mfg lomo
     

Ähnliche Themen

  1. Zeige mir alle Daten, die älter sind als 7 Tage
    Von kayut im Forum Relationale Datenbanksysteme
    Antworten: 3
    Letzter Beitrag: 06.02.10, 20:42
  2. Batch - Dateien die älter sind als 6 Wochen löschen
    Von ombus im Forum Sonstige Sprachen
    Antworten: 1
    Letzter Beitrag: 07.06.08, 02:40
  3. Alle Datensätze bis auf die letzten z.B. 50 aus der Datenbank löschen
    Von aliben37 im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 10.08.07, 20:26
  4. Einträge löschen, die älter als 1 Woche sind
    Von Miraculixx im Forum Relationale Datenbanksysteme
    Antworten: 5
    Letzter Beitrag: 29.03.07, 14:04
  5. Antworten: 16
    Letzter Beitrag: 15.06.05, 18:22