我希望有人能快速回答这个问题......
我有开始日期和结束日期。什么是生成所有包含日期的完整列表的最快/最简单的方法?
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
感谢您的关注! :)
答案 0 :(得分:1)
这将支持超过2,000天(取决于您的SQL Server版本和您拥有的用户对象数),如果您需要更多,只需将sys.all_objects
更改为sys.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;