|
DECLARA @dt fecha SET @dt=GETDATE() DECLARE @number int CONJUNTO @number=3 --1. Especificar la fecha del primer o último día del año --A. El primer día del año SELECT Co nVERT(char(5),@dt,120)+ '1-1' --B. El último día del año SELECT Co nVERT(char(5),@dt,120)+ '12-31' --2. El primer o último día del trimestre en el que se encuentra la fecha especificada --A. Primer día del trimestre SELECT Co nVERT(fecha-hora, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt)-2, @dt), 120)+ '1 ')
--B. Último día del trimestre (sentencia del caso) SELECT Co nVERT(fecha-hora, Co nVERT(char(8), DATEADD(Mo nth, DATEPART(Quarter,@dt)*3-Mo nth(@dt), @dt), 120) +CASO CUANDO FECHAPARTE(Quarter,@dt) en(1,4) LUEGO '31 'ELSE '30' FIN) --C. Último día del trimestre (algoritmo de empuje directo) SELECT DATEADD(Day,-1, Co nVERT(char(8), DATEADD(Mo nth, 1+DATAPART(Cuarto,@dt)*3-Mo nth(@dt), @dt), 120)+ '1 ') --3. El primer o último día del mes en el que se encuentra la fecha especificada --A. El primer día del mes SELECT Co nVERT(fecha-tiempo, Co nVERT(char(8),@dt,120)+ '1')
--B. El último día del mes SELECT DATEADD(Day,-1,Co nVERT(char(8),DATEADD(Mo nth,1,@dt),120)+ '1 ') --C. Último día del mes (método incorrecto fácil de usar) SELECT DATEADD(Mo nth,1,DATEADD(Day,-DAY(@dt),@dt)) --4. Cualquier día de la semana en el que se encuentre la fecha especificada SELECT DATEADD(Day,@number-DATEPART(Weekday,@dt),@dt)
--5. Cualquier día de la semana en el que se encuentre la fecha especificada --Un. El domingo como el primer día de la semana SELECT DATEADD(Day,@number-(DATEPART(Día Laborable,@dt)+@@DATEFIRST-1)%7,@dt)
--B. El lunes es el primer día de la semana SELECT DATEADD(Day,@number-(DATEPART(Weekday,@dt)+@@DATEFIRST-2)%7-1,@dt)
|