Se as datas não tiverem mais de 2047 dias de intervalo:
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
Atualizei minha resposta após vários pedidos para fazê-lo. Por quê?
A resposta original continha a subconsulta
select distinct number from master.dbo.spt_values
where name is null
que oferece o mesmo resultado, pois os testei no SQL Server 2008, 2012 e 2016.
No entanto, como tentei analisar o código que o MSSQL internamente ao consultar de
spt_values
, descobri que o SELECT
instruções sempre contêm a cláusula WHERE [type]='[magic code]'
. Portanto, decidi que, embora a consulta retorne o resultado correto, ela entrega o resultado correto por motivos errados:
Pode haver uma versão futura do SQL Server que defina um
[type]
diferente valor que também tem NULL
como valores para [name]
, fora do intervalo de 0-2047, ou mesmo não contíguo, caso em que o resultado seria simplesmente errado.