|
ОГОЛОСІТЬ @dt дату, час SET @dt=GETDATE() ОГОЛОСИТИ @number int SET @number=3 --1. Вкажіть дату першого або останнього дня року --А. Перший день року ВИБРАТИ Co nVERT(char(5),@dt,120)+ '1-1' --Б. Останній день року SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. Перший або останній день кварталу, в якому розташована вказана дата --Відповідь. Перший день кварталу ВИБРАТИ Co nVERT(datetime, Co nVERT(char(8), DATEADD (Місяць, DATEPART(Чверть,@dt)*3-Місяць nth(@dt)-2, @dt), 120)+ '1 ')
--B. Останній день кварталу (рішення CASE) ВИБРАТИ Co nVERT(datetime, Co nVERT(char(8), DATEADD (Місяць, DATEPART(Чверть,@dt)*3-Мес nth(@dt), @dt), 120) +CASE WHEN DATEPART(Квартал,@dt) у (1,4) ПОТІМ '31' 'ІНАКШЕ '30' ЗАКІНЧУЄТЬСЯ) --C. Останній день кварталу (алгоритм прямого поштовху) ВИБРАТИ DATEADD (День,-1, Co nVERT(char(8), DATEADD (Місяць, 1+DATEPART(Чверть,@dt)*3-Мес nth(@dt), @dt), 120)+ '1 ') --3. Перший або останній день місяця, у якому розташована вказана дата --А. Перший день місяця ВИБРАТИ 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(Місяць nth,1,DATEADD(День,-ДЕНЬ(@dt),@dt)) --4. Будь-який день тижня, у який розташована вказана дата SELECT DATEADD (День,@number-DATEPART(Будній день,@dt),@dt)
--5. Будь-який день тижня, у який призначена дата --А. Неділя як перший день тижня ВИБРАТИ DATEADD(День,@number-(DATEPART(Будні,@dt)+@@DATEFIRST-1)%7,@dt)
--Б. Понеділок — перший день тижня ВИБЕРІТЬ DATEADD(День,@number-(DATEPART(Будні,@dt)+@@DATEFIRST-2)%7-1,@dt)
|