|
DECLARE @dt data SET @dt=GETDATE() DECLARE @number int CONJUNTO @number=3 --1. Especifique a data do primeiro ou último dia do ano --A. O primeiro dia do ano SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. O último dia do ano SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. O primeiro ou último dia do trimestre em que a data especificada está localizada --A. Primeiro dia do trimestre SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2, @dt), 120)+ '1 ')
--B. Último dia do trimestre (sentença do caso) SELECT Co nVERT(datetime, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120) +CASO QUANDO DATAPARTE(Quarter,@dt) em(1,4) ENTÃO '31 'ELSE '30' FIM) --C. Último dia do trimestre (algoritmo de empurrar direto) SELECIONE DATAADD(Dia,-1, Co nVERT(char(8), DATEADD(Mo nth, 1+DATEPART(Quarto,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. O primeiro ou último dia do mês em que a data especificada está localizada --A. O primeiro dia do mês SELECT Co nVERT(datetime,Co nVERT(char(8),@dt,120)+ '1')
--B. O último dia do mês SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Último dia do mês (fácil de usar método errado) SELECIONE DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Qualquer dia da semana em que a data especificada esteja localizada SELECIONE DATEADD(Dia,@number-DATEPART(Dia da semana,@dt),@dt)
--5. Qualquer dia da semana em que a data especificada esteja localizada --Um. Domingo como o primeiro dia da semana SELECIONE DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-1)%7,@dt)
--B. Segunda-feira é o primeiro dia da semana SELECIONE DATEADD(Dia,@number-(DATEPART(Dia da Semana,@dt)+@@DATEFIRST-2)%7-1,@dt)
|