SQL-Server: Crear una tabla auxiliar con Fechas comprendidas entre dos fechas dadas

A veces necesitamos una tabla calendario. De hecho muchas veces la necesitamos. ¿Cómo podemos crear una tabla ad-hoc con todas las fechas comprendidas entre dos fechas dadas en SQL-Server? Pues de la siguiente forma:

DECLARE @FechaInicio date
DECLARE @FechaFin date

--En este punto le doy valor a las fechas

Select @FechaInicio = '01/01/2017'
Select @FechaFin = '01/07/2017'

--Aquí creamos la variable tabla con los valores
DECLARE @dim TABLE ([Fecha] DATE)

	INSERT @dim([Fecha])
	SELECT d
	FROM
	(
	  SELECT
		  d = DATEADD(DAY, rn - 1, @FechaInicio)
	  FROM 
	  (
		  SELECT TOP (DATEDIFF(DAY, @FechaInicio, @FechaFin)) 
			  rn = ROW_NUMBER() OVER (ORDER BY s1.[object_id])
		  FROM
			  sys.all_objects AS s1
		  CROSS JOIN
			  sys.all_objects AS s2
		  ORDER BY
			  s1.[object_id]
	  ) AS x
	) AS y;

--Aquí hacemos un select sobre dim para ver el resultado
Select Fecha from @dim

Anuncios

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