Ich arbeite an einer Bereinigungsprozedur auf SQL Server 2005, die alle Zeilen in einer Tabelle älter als 1 Jahr + Zeit im aktuellen Jahr gelöscht werden muss.Wie bekomme ich das Datum der ersten Sekunde des Jahres mit SQL?
Ex: Wenn ich das Verfahren heute ausführen 2009.06.10 es hat Zeilen als älter löschen 2008-01-01 00.00 (dh 2007 aufgenommen und rückwärts).
Wie bekomme ich das Datum der ersten Sekunde des Jahres?
Ich habe dies versucht:
select cast((DATEPART(year, getdate()) -1)AS DATETIME);
aber ich bekomme 1905-07-02 00:00:00.000
und nicht 2008-01-01 00:00
(wie ich falsch erwartet).
Kann mir bitte jemand helfen?
Hmm .. Interessant, wie die andere Antwort auf diese Frage (zum Zeitpunkt des Schreibens) 8 Upvotes hat, während meine nur 1 Up- und 1 Down-Stimme hat, aber meine ist die einzige Lösung, die die richtige Antwort gibt. (dh. Für das heutige Datum (6. Oktober 2009) ist das Ergebnis 2008-01-01 00:00:00, während Rajs Lösung zurückgibt 2009-01-01 00:00:00) – CraigTP
Ich mag SELECT CONVERT (DATETIME, CAST (YEAR (GETDATE()) - 1 AS VARCHAR) + '0101', 112) oder SELECT CONVERT (DATETIME, CAST (JA (GETDATE()) - 1 AS VARCHAR), 112) mehr, weil es Eingabeformat angibt. – LukLed
@CraigTP: Ich habe Sie selbst aufgestuft, weil Sie die richtige Antwort hatten. Ich habe meine geändert, um die Korrektur zu reflektieren –