在ms sqlserver中的SELECT语句中循环

Dre*_*mer 5 sql sql-server

可能重复:
SQL Server 2008生成一系列日期时间

我必须遍历startDate和endDate

SELECT语句应该生成结果为..

预期产出:

------------
Date
------------
09/01/2012 -> startDate
09/02/2012
09/03/2012
.
.
.
.
09/30/2012 -> endDate
Run Code Online (Sandbox Code Playgroud)

我试过了

declare @startDate datetime , @endDate endDate
set @startDate='09/01/2012'
set @endDate='09/30/2012'

while DATEDIFF(@startDate,@endDate)!=-1
begin
select @startDate as Date
set @startDate = DATEADD(day,2,@startDate)
end
Run Code Online (Sandbox Code Playgroud)

但它没有成功..

它产生30个输出..

我希望单个输出中的日期与预期输出中的日期相同.

我在哪里错了?

Ale*_* K. 10

这将为每次迭代提供每个循环迭代的结果集select.

如果您希望每次迭代将单个结果集插入临时表/变量,则从中选择或

;with T(day) as
(
    select @startDate as day
        union all
    select day + 1
        from T
        where day < @endDate
)
select day as [Date] from T
Run Code Online (Sandbox Code Playgroud)