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

146voto

Colin Mackay Punkte 18052

使用方法 DATEADD in Ihrer WHERE-Klausel:

...
WHERE date < DATEADD(day, -30, GETDATE())

Sie können auch eine Abkürzung verwenden d o dd anstelle von day .

12voto

Vikas Chauhan Punkte 916

Sie können auch Folgendes verwenden

SELECT * from Results WHERE date < NOW() - INTERVAL 30 DAY;

8voto

James Wiseman Punkte 29172

Obwohl die DATEADD ist wahrscheinlich der transparenteste Weg, dies zu tun, aber es ist erwähnenswert dass einfach getdate()-30 ist ebenfalls ausreichend.

Suchen Sie außerdem nach 30 Tagen ab jetzt, d. h. einschließlich Stunden, Minuten, Sekunden usw.? Oder 30 Tage ab heute um Mitternacht (z. B. 12/06/2010 00:00:00.000). In diesem Fall könnten Sie Folgendes in Betracht ziehen:

SELECT * 
FROM Results 
WHERE convert(varchar(8), [Date], 112) >= convert(varchar(8), getdate(), 112)

6voto

Ray Koren Punkte 762

Um Datensätze aus einer Tabelle zu löschen, deren Datumswert in der Spalte Date_ älter als 30 Tage ist, verwenden Sie diese Abfrage:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < GETDATE() - 30

...oder dies:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(dd,-30,GETDATE())

So löschen Sie Datensätze aus einer Tabelle, deren Datumswert in der Spalte Date_ älter als 12 Stunden ist:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(hh,-12,GETDATE())

So löschen Sie Datensätze aus einer Tabelle, deren Datumswert in der Spalte Date_ älter als 15 Minuten ist:

USE Database_name;
DELETE FROM Table_name
WHERE Date_column < DATEADD(mi,-15,GETDATE())

Von: http://zarez.net/?p=542

1voto

Chagbert Punkte 682

Sie können auch zwischen zwei Daten wählen:

Delete From tblAudit
WHERE Date_dat < DATEADD(day, -360, GETDATE())
GO
Delete From tblAudit
WHERE Date_dat > DATEADD(day, -60, GETDATE())
GO

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