Buscar..


Parámetros

Parámetro Detalles
@Partir de la fecha El límite inferior inclusivo del intervalo de fechas generado.
@Hasta la fecha El límite superior inclusivo del rango de fechas generado.

Observaciones

La mayoría de los expertos parecen recomendar la creación de una tabla de fechas en lugar de generar una secuencia sobre la marcha. Consulte http://dba.stackexchange.com/questions/86435/filling-in-date-holes-in-grouped-by-date-sql-data

Generando intervalo de fechas con CTE recursivo

Usando un CTE recursivo, puede generar un rango de fechas inclusivo:

Declare  @FromDate    Date = '2014-04-21',
         @ToDate      Date = '2014-05-02'

;With DateCte (Date) As
(
    Select  @FromDate Union All
    Select  DateAdd(Day, 1, Date)
    From    DateCte
    Where   Date < @ToDate
)
Select  Date
From    DateCte
Option  (MaxRecursion 0)

La configuración predeterminada de MaxRecursion es 100. Generar más de 100 fechas usando este método requerirá el segmento Option (MaxRecursion N) de la consulta, donde N es la configuración deseada de MaxRecursion . Establecer esto en 0 eliminará la limitación de MaxRecursion completo.

Generando un intervalo de fechas con una tabla de conteo

Otra forma de generar un rango de fechas es mediante la utilización de una Tabla de Tally para crear las fechas entre el rango:

Declare   @FromDate   Date = '2014-04-21',
          @ToDate     Date = '2014-05-02'

;With 
   E1(N) As (Select 1 From (Values (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) DT(N)),
   E2(N) As (Select 1 From E1 A Cross Join E1 B),
   E4(N) As (Select 1 From E2 A Cross Join E2 B),
   E6(N) As (Select 1 From E4 A Cross Join E2 B),
   Tally(N) As
   (
        Select    Row_Number() Over (Order By (Select Null)) 
        From    E6
   )
Select   DateAdd(Day, N - 1, @FromDate) Date
From     Tally
Where    N <= DateDiff(Day, @FromDate, @ToDate) + 1


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow