|
ОБЪЯВИТЕ @dt свидание SET @dt=GETDATE() DECLARE @number int НАБОР @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. Последний день квартала (решение по делу) ВЫБЕРИТЕ 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. Последний день квартала (алгоритм прямого пуша) ВЫБЕРИТЕ 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')
--Б. Последний день месяца ВЫБРАТЬ DATEADD(День,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1') --C. Последний день месяца (легко использовать неправильный метод) ВЫБЕРИТЕ DATEADD(Mo nth,1,DATEADD(День,-ДЕНЬ(@dt),@dt)) --4. Любой день недели, в который соответствует указанной дате ВЫБЕРИТЕ DATEADD(День,@number-DATEPART(Будний день,@dt),@dt)
--5. Любой день недели, в который соответствует указанной дате --A. Воскресенье — первый день недели ВЫБЕРИТЕ DATEADD(День,@number-(DATEPART(Будний день,@dt)+@@DATEFIRST-1)%7,@dt)
--Б. Понедельник — первый день недели ВЫБЕРИТЕ DATEADD(День,@number-(DATEPART(Будний день,@dt)+@@DATEFIRST-2)%7-1,@dt)
|