Si sus fechas no tienen más de 2047 días de diferencia:
declare @dt datetime, @dtEnd datetime
set @dt = getdate()
set @dtEnd = dateadd(day, 100, @dt)
select dateadd(day, number, @dt)
from
(select number from master.dbo.spt_values
where [type] = 'P'
) n
where dateadd(day, number, @dt) < @dtEnd
Actualicé mi respuesta después de varias solicitudes para hacerlo. ¿Por qué?
La respuesta original contenía la subconsulta
select distinct number from master.dbo.spt_values
where name is null
que ofrece el mismo resultado, ya que los probé en SQL Server 2008, 2012 y 2016.
Sin embargo, cuando traté de analizar el código que MSSQL internamente al consultar desde spt_values
, encontré que SELECT
las sentencias siempre contienen la cláusula WHERE [type]='[magic code]'
.
Por lo tanto, decidí que, aunque la consulta arroja el resultado correcto, entrega el resultado correcto por razones incorrectas:
Puede haber una versión futura de SQL Server que defina un [type]
diferente valor que también tiene NULL
como valores para [name]
, fuera del rango de 0-2047, o incluso no contiguos, en cuyo caso el resultado sería simplemente incorrecto.