【发布时间】:2020-04-29 20:26:31
【问题描述】:
我在表格中有一个日期列表。对于此示例,每个月的第一天。我们称它为带有 endTime 列的表时间段
endTime
1-1-2019
2-1-2019
3-1-2019
4-1-2019
我想查找列表中每个日期后的所有日期 x 天数。假设 x = 4。那么列表应该是:
1-1-2019
1-2-2019
1-3-2019
1-4-2019
2-1-2019
2-2-2019
2-3-2019
2-4-2019
3-1-2019
3-2-2019
3-3-2019
3-4-2019
4-1-2019
4-2-2019
4-3-2019
4-4-2019
我找到了查找日期之间所有日期的解决方案,但是当我尝试将它与日期列表一起使用时,我不断收到 “子查询返回超过 1 个值” 错误。
这是我尝试但不起作用的示例
declare @days DECIMAL = 4
declare @StartDate date = (select convert(varchar, DATEADD(Day, +0, endTime),101) from timeperiod
declare @EndDate date = (select convert(varchar, DATEADD(Day, +@days, endTime),101) from timeperiod;
;WITH cte AS (
SELECT @StartDate AS myDate
UNION ALL
SELECT DATEADD(day,1,myDate) as myDate
FROM cte
WHERE DATEADD(day,1,myDate) <= @EndDate
)
SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)
【问题讨论】:
-
您将问题标记为 MySQL-relative,但使用 SQL Server 语法...奇怪...
-
请标记你的sqlserver版本;它可以有一个轴承