78 Stimmen

Löschen von Zeilen mit einem Datum, das älter als 30 Tage ist, mit einer SQL Server-Abfrage

Ich benötige eine SQL-Anweisung zum Löschen von Zeilen, die älter als 30 Tage sind.

Mein Tisch events hat ein Feld date die das Datum und die Uhrzeit enthält, zu der sie in die Datenbank eingefügt wurde.

Wird das funktionieren?
SELECT * from Results WHERE [Date] >= DATEADD(d, -30, getdate())

1 Stimmen

Eigentlich.... Löscht "Felder"?? Sie löschen Zeilen, nicht Felder. Wollen Sie die Felder NULL machen?

0 Stimmen

Ihr obiges SQL wählt Zeilen aus, bei denen die Tage innerhalb der letzten 30 Tage liegen.

0 Stimmen

Ist damit Ihre Frage beantwortet? wie man das 30-Tage-vor-Datum von Heute-Datum erhält

1voto

rjose Punkte 455

Wir können dies verwenden:

    DELETE FROM table_name WHERE date_column < 
           CAST(CONVERT(char(8), (DATEADD(day,-30,GETDATE())), 112) AS datetime)

Eine bessere Option ist jedoch die Verwendung:

DELETE FROM table_name WHERE DATEDIFF(dd, date_column, GETDATE()) > 30

Ersteres ist nicht sargable (d.h. Funktionen auf der rechten Seite des Ausdrucks, so dass es keinen Index verwenden kann) und dauert 30 Sekunden, letzteres ist sargable und dauert weniger als eine Sekunde.

0voto

Bill Grubbs Punkte 3

Anstatt in varchar zu konvertieren, um nur den Tag zu erhalten ( convert(varchar(8), [Datum], 112) ), ziehe ich es vor, ein Datetime-Feld beizubehalten und nur das Datum (ohne die Uhrzeit) anzugeben.

SELECT * FROM Results 
WHERE CONVERT(date, [Date]) >= CONVERT(date, GETDATE())

0voto

markhorrocks Punkte 1891

GETDATE() funktionierte bei mir nicht mit mySQL 8

FEHLER 1305 (42000): FUNCTION mydatabase.GETDATE existiert nicht

aber das hier schon:

DELETE FROM table_name WHERE date_column < CURRENT_DATE - 30;

0voto

Prem prakash Punkte 21

Zeile löschen, die älter als 30 Tage ist.

SELECT * FROM TABLE_NAME where timestampString <= now() - interval 30 DAY;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X