Pracuję nad procedurą czyszczenia SQL Server 2005, która musi usunąć wszystkie wiersze w tabeli starsze niż 1 rok temu + czas minął w bieżącym roku.Jak mogę uzyskać datę pierwszej sekundy roku z SQL?
Ex: Gdybym wykonać procedurę dzisiaj 10.06.2009 musi usuwać wiersze starsze niż 2008-01-01 00:00 (czyli 2007 włączone i do tyłu).
Jak mogę uzyskać datę pierwszej sekundy roku?
Próbowałem to:
select cast((DATEPART(year, getdate()) -1)AS DATETIME);
ale mam 1905-07-02 00:00:00.000
i nie 2008-01-01 00:00
(jak błędnie spodziewać).
Czy ktoś może mi pomóc, proszę?
Hmm .. Ciekawe, jak inna odpowiedź na to pytanie (w chwili pisania tego tekstu) ma 8 przegranych, podczas gdy moja ma tylko 1 up i 1 down vote, ale moje jest jedynym rozwiązaniem, które daje poprawną odpowiedź. (Na dzień dzisiejszy (6 października 2009 r.) wynikiem jest 2008-01-01 00:00:00, podczas gdy rozwiązanie Raj powraca 2009-01-01 00:00:00) – CraigTP
Lubię WYBIERZ KONWERTĘ (DATETIME, CAST (ROK (GETDATE()) - 1 AS VARCHAR) + '0101', 112) lub SELECT CONVERT (DATETIME, CAST (ROK (GETDATE()) - 1 AS VARCHAR), 112) więcej, ponieważ określa on format wejściowy. – LukLed
@CraigTP: Ja sam przegłosowałem cię, ponieważ miałeś właściwą odpowiedź. Zmieniłem moje, aby odzwierciedlały korektę –