我的问题类似于this MySQL 问题,但适用于 SQL Server:
是否有函数或查询可以返回两个日期之间的天数列表?例如,假设有一个名为 ExplodeDates 的函数:
SELECT ExplodeDates('2010-01-01', '2010-01-13');
这将返回一个包含以下值的列表:
2010-01-01
2010-01-02
2010-01-03
2010-01-04
2010-01-05
2010-01-06
2010-01-07
2010-01-08
2010-01-09
2010-01-10
2010-01-11
2010-01-12
2010-01-13
我认为日历/数字表可能可以帮助我。
<小时/>更新
我决定查看提供的三个代码答案,以及执行结果(占总批处理的百分比)为:
- Rob Farley's answer : 18%
- StingyJack's answer :41%
- KM's answer :41%
越低越好
我接受了 Rob Farley 的答案,因为它是最快的,尽管数字表解决方案(KM 和 StingyJack 在他们的答案中都使用了)是我最喜欢的。 Rob Farley 的速度快了三分之二。
更新2
艾莉维亚的answer更加简洁。我已经更改了接受的答案。
最佳答案
这几行是 sql server 中这个问题的简单答案。
WITH mycte AS
(
SELECT CAST('2011-01-01' AS DATETIME) DateValue
UNION ALL
SELECT DateValue + 1
FROM mycte
WHERE DateValue + 1 < '2021-12-31'
)
SELECT DateValue
FROM mycte
OPTION (MAXRECURSION 0)
关于sql-server - 使用函数获取两个日期之间的日期列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1378593/