Sql server 2008 返回基于2个日期的日期列表

Sql server 2008 返回基于2个日期的日期列表,sql-server-2008,Sql Server 2008,我希望有人能快速回答这个问题 我有开始日期和结束日期。生成包含的所有天数的完整列表的最快/最简单的方法是什么 startDate endDate ------------------------------ 2013-01-01 2013-01-07 将产生: day date -------------------- 1 2013-01-01 2 2013-01-02 3 2013-01-03 4

我希望有人能快速回答这个问题

我有开始日期和结束日期。生成包含的所有天数的完整列表的最快/最简单的方法是什么

startDate         endDate
------------------------------
2013-01-01        2013-01-07
将产生:

day        date
--------------------
 1        2013-01-01
 2        2013-01-02
 3        2013-01-03
 4        2013-01-04
 5        2013-01-05
 6        2013-01-06
 7        2013-01-07

谢谢你的关心!:)

这将支持超过2000天(取决于您的SQL Server版本和用户对象的数量),如果您需要更多,只需将
sys.all\u objects
更改为
sys.all\u columns
(应支持超过8000个)


这将支持超过2000天(取决于您的SQL Server版本和用户对象的数量),如果您需要更多,只需将
sys.all_objects
更改为
sys.all_columns
(应支持8000多个)


此处已回答:@AaronBertrand受保护帖子的答案也包括MSSQL的解决方案,例如,请参阅第二个答案。@jpw该问题被标记为MySQL,因此,仅因为有人使用错误的RDBMS进行了回答,并不能使其成为正确的重复IMHO。@AaronBertrand True,我只是想指出OP在哪里可以找到答案…这里已经回答:@AaronBertrand受保护帖子的答案也包括MSSQL的解决方案,例如,请参阅第二个答案。@jpw问题被标记为MySQL,因此,仅仅因为有人回答了错误的RDBMS,并不意味着这是一个正确的重复IMHO。@AaronBertrand True,我只是想指出OP可以在哪里找到答案……这两个回答都非常有用-谢谢,@jpw为我指出了程序帖子,并感谢你在该帖子和本帖子中给出的答案,@aaronBertrand.....恒星!这两个回答都非常有用-谢谢你,@jpw给我指了指程序帖子,谢谢你在那篇帖子和这篇文章中的回答,@aaronBertrand…stellar!
DECLARE @start DATE = '20130101', @end DATE = '20130107';

;WITH x AS
(
  SELECT TOP (DATEDIFF(DAY, @start, @end)+1) 
    rn = ROW_NUMBER() OVER (ORDER BY [object_id])
    FROM sys.all_objects
)
SELECT [day] = rn, [date] = DATEADD(DAY, rn-1, @start)
FROM x
ORDER BY rn;