|
ОБЯВЕТЕ @dt среща SET @dt=GETDATE() DECLARE @number int КОМПЛЕКТ @number=3 --1. Посочете датата на първия или последния ден от годината --А. Първият ден на годината SELECT Co nVERT(char(5),@dt,120)+ '1-1' --Б. Последният ден от годината SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Първият или последният ден от тримесечието, в което се намира посочената дата --А. Първи ден на тримесечието SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Месец, DATEPART(Тримесечие,@dt)*3-Месец nth(@dt)-2, @dt), 120)+ '1 ')
--Б. Последен ден от тримесечието (решение по ДЕЛОТО) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Месец, DATEPART(Четвърт, @dt)*3-Месец nth(@dt), @dt), 120) +CASE WHEN DATEPART(Quarter,@dt) в(1,4) ПОСЛЕ '31' 'ИНАЧЕ '30' ПРИКЛЮЧИ) --C. Последен ден от тримесечието (алгоритъм за директен push) SELECT DATEADD(Ден,-1, Co nVERT(char(8), DATEADD(Месец, 1+DATEPART(Четвърт, @dt)*3-Месец nth(@dt), @dt), 120)+ '1 ') --3. Първият или последният ден от месеца, в който се намира посочената дата --А. Първият ден на месеца SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')
--Б. Последният ден от месеца SELECT DATEADD(Ден,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1') --C. Последен ден от месеца (лесен за използване грешен метод) SELECT DATEADD(Mon nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Всеки ден от седмицата, в който се намира посочената дата ИЗБЕРЕТЕ DATEADD(Ден,@number-DATEPART(Делничен ден,@dt),@dt)
--5. Всеки ден от седмицата, в който се намира посочената дата --А. Неделя като първи ден от седмицата ИЗБЕРЕТЕ DATEADD(Ден,@number-(DATEPART(Делничен ден,@dt)+@@DATEFIRST-1)%7,@dt)
--Б. Понеделник е първият ден от седмицата ИЗБЕРЕТЕ DATEADD(Ден,@number-(DATEPART(Делн.@dt)+@@DATEFIRST-2)%7-1,@dt)
|