kostenloser Webspace werbefrei: lima-city


Datensätze löschen die älter als 3 Monate sind

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    computerfreak1

    Kostenloser Webspace von computerfreak1

    computerfreak1 hat kostenlosen Webspace.

    Hallo erstmal,
    ich will aus meiner Tabelle die Datensätze entfernen, die älter als 3 Monate sind. In der Tabelle gibt es eine Spalte "datum" die als Typ "TIMESTAMP" besitzt.

    |text| datum |
    --------------------------
    |blah|2007-10-18 13:48:34|
    |blah|2007-09-18 13:48:34|
    |blah|2007-05-18 13:48:34|

    $sql="DELETE FROM tabelle WHERE ????";


    Weiß jemand was man was man als Bedingung hinschreiben muss?
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Dazu kenne ich keine Mysql "Funktion" (sowas wie CONCAT), aber über einen Umweg gehts vielleicht auch: das Feld Datum abfragen und mit php explode den TIMESTAMP aufsplitten.
    Ist natürlich relativ aufwändig, aber machbar.
  4. Autor dieses Themas

    computerfreak1

    Kostenloser Webspace von computerfreak1

    computerfreak1 hat kostenlosen Webspace.

    Aha, na wenns keine gibt muss ich es wohl so machen. Aber Aufsplitten muss ich den Timestamp nicht weil man dann auch direkt nur den Monat mit DATE_FORMAT(datum,'%c') abfragen.
    Trotzdem danke für die schnelle Antwort! :thumb:
  5. Ich habe grad was im Mysql Referenzhandbuch gefunden:

    "DATEDIFF() gibt die Anzahl der Tage zwischen dem Startdatum expr und dem Enddatum expr2 zurück. expr und expr2 sind DATE- oder DATETIME-Ausdrücke. Nur die Datumsanteile der Werte werden in der Berechnung verwendet."

    Quelle: http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html

    Klingt doch gut, wenn die Differenz größer als x Tage ist, wird's gelöscht.
    Um den Monat aus dem TIMESTAMP rauszukriegen, gibt es auch noch DAYOFMONTH(date).
    "Gibt den Tag im Monat für date zurück. Der Bereich liegt zwischen 0 und 31."

    Beitrag geändert: 18.10.2007 14:59:22 von ddanne
  6. Also das geht so... Es gibt in MySQL die funktion UNIX_TIMESTAMP(), die dir die aktuelle Zeit als Timestamp zurückgibt. Jetzt kannst du ausrechnen, wie viele Sekunden in drei Monaten (also 90 Tagen) sind, das sind nämlich 90*24*60*60=7776000 Sekunden.

    Also lautet die Abfrage wie folgt:

    DELETE FROM tabelle WHERE datum < ( UNIX_TIMESTAMP() - 7776000 )

    Viele Gr&#252;&#223;e,
    ps3web
  7. e********l

    Wieso kompliziert wenn es auch einfacher geht? Es gibt daf&#252;r sehr sch&#246;ne funktionen in MySQL.

    DELETE FROM tabelle WHERE datum < DATE_SUB(NOW(), INTERVAL 3 MONTH)
  8. Autor dieses Themas

    computerfreak1

    Kostenloser Webspace von computerfreak1

    computerfreak1 hat kostenlosen Webspace.

    Ahhh! Vielen Dank, jetzt muss ich es doch nicht so umst&#228;ndlich machen. :thumb:
  9. Autor dieses Themas

    computerfreak1

    Kostenloser Webspace von computerfreak1

    computerfreak1 hat kostenlosen Webspace.

    Ich brauche jetzt woanders einen &#228;hnlichen Code und dort m&#246;chte ich alle die Datens&#228;tze auslesen, die von heute sind. Und das alles auch wieder aus der selben Tabelle.
    Ich habe es auch schon mit folgendem Code probiert, aber es wird nichts ausgegeben.
    SELECT id FROM bz WHERE time = DATE_SUB(NOW(), INTERVAL 1 DAY)

    Wie muss der Code richtig hei&#223;en?


    Beitrag geändert: 27.10.2007 18:03:26 von computerfreak1
  10. e********l

    Das ist wieder ganz einfach ;)
    SELECT id FROM bz WHERE time = CURDATE()


    Das war es schon. Mit CURDATE bekommst du das aktuelle Datum ohne den Zeit Schnickschnack. Time ist bei dir doch ein DateTime oder? Wenn es ein TimeStamp ist m&#252;sstest du das bestenfalls erst umwandeln. Zb. so:
    SELECT id FROM bz WHERE time = TIMESTAMP(CURDATE())

    ^^
  11. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!