Calcular el primer dia y el ultimo de un mes dado, en SQL

4 11 2009

Para el acordeón, una forma de calcular el dia inicial y final de un mes, con el fin de determinar si un mes tiene 28, 30 o 31, es como sigue:

declare @mes varchar(2)
declare @fecha as varchar(8)
set @mes = '02'
set @fecha = '2009' + @mes + '01'
select @fecha AS FECHA_INICIAL,
	CAST (@fecha as smalldatetime) AS FECHA_INICIAL,
	dateadd(m,1, CAST (@fecha as smalldatetime)) AS FECHA_SIGUIENTE,
	dateadd(d,-1,dateadd(m,1, CAST (@fecha as smalldatetime))) AS FECHA_FINAL

Un escenario que me imagino para usarlo es en el que se requiere calcular o ejecutar un proceso en un mes en particular (fecha entre un rango inicial y final), sin embargo, esto es solo una curiosidad, porque tambien es posible hacer un calculo para un mes en particular poniendo en la condicion algo así como esto

SELECT * FROM TABLA WHERE MONTH(FECHA)=@MES

Sin embargo, creo que hacerlo de esta manera, de tener un índice la TABLA en cuestión no se usuaría en la consulta, no así si usaramos una condición de tipo between @FECHA_INICIAL AND @FECHA_FINAL. Que alguien me corriga, si tengo la idea errónea.


Acciones

Information

One response

4 11 2009

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s




A %d blogueros les gusta esto: