2010-05-08 3 views
11

Ich habe genau die gleiche Frage here gefunden.Entfernen von Zeilen aus der MySQL-Tabelle, wo der Zeitstempel über einen Tag alt ist?

Aber es funktioniert nicht für mich. Ich habe es ein wenig modifiziert, manipuliert, und ich kann es nicht herausfinden. Ich versuche, Zeilen zu entfernen, die älter als einen Tag sind. Hier ist mein Code:

Ziemlich einfache Frage nehme ich an, aber es nervt die Hölle aus mir heraus. Ich würde jede Hilfe schätzen.

Wenn es einen Unterschied macht, ist die Spalte ein TIMESTAMP Typ.

EDIT: Anscheinend bin ich ein Idiot. Die Frage, zu der ich Sie verlinkt habe, bezieht sich auf SQLite3. Meine Frage ist nun, wie kann ich das in MySQL machen?

Antwort

24

Sie können ein Intervall subtrahieren:

DELETE FROM logs WHERE time < now() - interval 1 day 
+0

Das tat es. Vielen Dank – Rob

+0

Kurz und gut, funktionierte auch für mich! Danke! –

8

Diese Antwort war IIRC für SQLite3. Sie verwenden MySQL, das diese Syntax nicht unterstützt.

Sie wollen DATE_ADD() Funktion verwenden (Beispiel unten nicht getestet, sollte aber funktionieren):

DELETE FROM logs WHERE time < TIMESTAMPADD(DAY,-1,NOW()); 
+0

Nun, die erklären würde, – Rob

0

In meinem Fall nur die

timestampadd

in positiver Richtung arbeiten s, wenn sie durch ein asc bestellten Kalender ausgeführt wird:

if (urldecode ($aUrl['Select']) == '>') 
     $this-> db-> where ('konzertdatum >', 'TIMESTAMPADD(DAY, 1, "'. $id . '") ', false) ; 
    else 
     $this-> db-> where ('konzertdatum < ', 'TIMESTAMPADD(DAY, -1, "'. $id . '") ', false) ; 

in negativer Richtung (-1), geht der Zeitstempel zurück zum ersten Eintrag. Ich habe auch versucht, CodeIgniter nicht zu verwenden, aber die gleiche Folge.

zusammenfassend, +1 als Parameter für TIMESTAMPADD Werke, -1 Arbeiten für den zweitniedrigsten Eintrag (dann zurück in dem ersten Springen. Aber es schlägt fehl, wenn ich weiter weg Schritt ab dem ersten Tag.

+0

Programmierung Leben kann einfach sein, ich habe vergessen, die desc in der Reihenfolge, um die negative Richtung arbeiten, jetzt es geht – Timo