piątek, 4 stycznia 2013

T-SQL pierwszy dzień miesiąca i pokrewne



T-SQL pierwszy dzień miesiąca, ostatni dzień miesiąca, pierwszy dzień następnego miesiąca i tym podobne dla dowolnej zadanej daty. Sposób dość pokrętny, ale działa :)



declare @data datetime;
declare @starter datetime;
set @starter = '01.01.1900';
set @data = '29.02.2012'

select DATEADD(mm, datepart(mm, @data)-1, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter)) as pierwszy_dzień_miesiąca,
DATEADD(D, -1, DATEADD(mm, datepart(mm, @data), DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter))) as ostatni_dzień_miesiąca,

DATEADD(D, -1, DATEADD(mm, datepart(mm, @data)+3, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter))) as ostatni_dzień_Za_trzy_Miesiące,
DATEADD(mm, datepart(mm, @data)-3, DATEADD(YYYY, DATEPART(YYYY, @data) - 1900, @starter)) as pierwszy_dzień_dwa_miesiące_temu

Oczywiście nie będzie działać dla dat < 01.01.1900

Brak komentarzy:

Prześlij komentarz