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
Una pregunta, y si quisiera crear una columna con los meses a partir de una fecha de inicio a una fecha final?