1

我希望有人对此有一个快速的答案......

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

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

感谢您的关注!:)

4

1 回答 1

1

这将支持超过 2,000 天(取决于您的 SQL Server 版本和您拥有的用户对象数量),如果您需要更多,只需更改sys.all_objectssys.all_columns(应该支持超过 8,000 个)。

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;
于 2013-10-10T19:51:29.053 回答