sábado, 6 de enero de 2007

Fwd: Tip SQL: Calculando el ultimo dia del mes

En base a una fecha especifica podemos calcular el ultimo dia del mes:


declare @Año varchar(4), @Mes varchar (2), @FechaEspecifica datetime , @Fecha varchar(10), @FechaInicial datetime , @FechaFinal datetime

set @FechaEspecifica = getdate()

select @Año = Convert(varchar (4),datepart(year ,@FechaEspecifica))

select @Mes = right('0' +Convert(varchar(2), datepart(month,@FechaEspecifica )),2)

set @Fecha = @Año+@Mes+ '01' -- compongo la fecha especifica al primer dia del mes

set @FechaInicial = Convert( datetime,@Fecha) --- obtengo el primer dia del mes

print @FechaInicial

set @FechaFinal = dateadd( month,1,@FechaInicial) -1 -- incremento un mes y le resto un dia

print @FechaFinal

--- version corta

print dateadd(month ,1, Convert(datetime ,Convert(varchar(4 ),datepart(year,@FechaEspecifica ))+right('0'+Convert(varchar (2),datepart(month ,@FechaEspecifica)),2)+ '01'))-1



-- Resultados Obtenidos

Jan 1 2007 12:00AM

Jan 31 2007 12:00AM

Jan 31 2007 12:00AM

--
Saludos,

Manolo Herrera

1 comentario:

Cesar Sanchez dijo...

DECLARE @FECHA DATETIME='15-02-2008'
DECLARE @DIA DATETIME =(SELECT DATEADD(month, DATEDIFF(month, 0, @FECHA) + 1, 0) - 1)
SELECT DATEPART(DAY ,@DIA ) AS ULTIMODIA