使用函数获取两个日期之间的日期列表。我的问题类似于这,这个MySQL问题,但打算用于SQLServer:是否有一个函数或查询将返回两个日期之间的天数列表?例如,假设有一个名为爆炸物的函数: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我在想一个日历/数字表也许能帮到我。更新我决定查看所提供的三个代码答案,执行结果-占批处理总数的百分比-是:罗布·法利的回答 : 18%史丁杰克的回答 : 41%KM的回答 : 41%越低越好我已经接受了罗伯·法利的答案,因为它是最快的,尽管数字表解决方案(KM和StingyJack在他们的答案中都使用)是我最喜欢的。罗伯·法利比他快了三分之二。更新2阿莉维亚氏回答更简洁。我已经改变了接受的答案。
3 回答
红糖糍粑
TA贡献1815条经验 获得超6个赞
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 DateValueFROM mycteOPTION (MAXRECURSION 0)
小唯快跑啊
TA贡献1863条经验 获得超2个赞
WITH date_range (calc_date) AS ( SELECT DATEADD(DAY, DATEDIFF(DAY, 0, '2010-01-13') - DATEDIFF(DAY, '2010-01-01', '2010-01-13'), 0) UNION ALL SELECT DATEADD(DAY, 1, calc_date) FROM date_range WHERE DATEADD(DAY, 1, calc_date) <= '2010-01-13')SELECT calc_dateFROM date_range;
添加回答
举报
0/150
提交
取消