Ich möchte einen SQL-Server-Job erstellen, der jeden Monat ausgeführt wird und alle alten Datensätze mit Ausnahme der letzten zwei Monate Daten entfernt. Mein ultimatives Motiv ist nur die letzten 2 Monate Daten zu halten Meine Datenbank, wenn Job ausgeführt wird, unabhängig von Wetter sind die Monate 28,30 oder 31 Tage Monat. für ex- Wenn der Job am 1. März ausgeführt wird, möchte ich alle Datensätze vom 1. Januar bis zum 1. März in meiner aktuellen Datenbank speichern und alle Datensätze löschen.Löschen Sie alle Daten vor 2 Monaten aus Tabelle in sqlserver
Derzeit verwende ich die folgende SQL-Abfrage für die Auswahl von Daten zu entfernen.
SELECT *
FROM tbl
where [Datetime] <= DATEADD(MONTH, -2,convert(datetime,'03/02/2016') )
Hinweis: - Das Datumsformat ist "MM/TT/JJJJ". aber es wählt auch die Daten von 1. Jan. Es ist nicht festgelegt, den Job am 1. jeden Monats zu beenden. wenn ich das Datum als '03/01/2016 'nehme, ist die Ausgabe gut. Nun, ich werde folgendes verwenden, wo Klausel
where [Datetime] <= DATEADD(MONTH, -2,Getdate()).
so betrachten, dass das Datum jeden Zeitpunkt des März sein können (oder das Datum eines jeden Monats)
Any suggestons? irgendwelche Ideen?. Bitte helfen Sie mir
Vielen Dank im Voraus
Das OP auch den ersten des laufenden Monats will es lief, '01.05/2016' im Falle Ihrer Code, also müssen Sie einen Tag hinzufügen, so dass der 'SELECT' keine Zeilen löscht, die zB eine [DateTime] von' 5/1/2016 03: 31: 56' haben. Die Verwendung von '<=' funktioniert nur, wenn Sie @requiredDate 23:59:59 hinzufügen. 'SELECT @requiredDate = DATEADD (Tag, 1, CONVERT (DATETIME, DATENADD (MM, DATEDIFF (MM, 0, GETDATE()) - 2, 0))) – scsimon