sql-server - 使用函数获取两个日期之间的日期列表

标签 sql-server date

我的问题类似于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 的答案,因为它是最快的,尽管数字表解决方案(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/

相关文章:

sql - 在 SQL Server 中使用 STRING_AGG 获取唯一值

sql - 将 int 转换为适用于 SQL Server 和 MS-Access 的 varchar

MongoDB 聚合框架 日期现在

date - 由于数据类型不同,对 SAS 日期宏的引用不起作用

java - 根据给定时区(本地时区)获取以毫秒为单位的时间

mysql - 简单的 SQL 连接理解?

sql-server - SQL Server : Select Parent-Child

sql-server - SQL Server 查询的执行时间呈指数增长

MySQL 日期范围多列计数和 Group By Select 语句

java - RSS Feed,解析所有可能的日期