我有一列日期。他们都是工作日。我想生成一个相距“n”天的日期列表。例如,从最近的日期开始,我想在它之前的n天,它之前的2天前,它之前的3天等等找到日期。我可以使用while循环,但是我想知道是否可以使用SQL集操作。可以做到吗?T-SQL从日期列中选择每第n个日期
0
A
回答
0
您可以使用dateadd函数 并使用连接到自身表进行选择。
什么,你需要做的是 - 结果插入到临时表, 与其他列则包含row_number然后命令一样的结果
简单的例子:
declare @t1 table (d datetime, row int)
insert @t1
select d, row_number()over(order by d)
from T1
order by d
select T1A.*, datediff(day,T1A.d,T1B.d) as dif
from @t1 as T1A
left join @t1 as T1B on T1A.row = T1B.row-1
0
DECLARE @mostRecent datetime2
SELECT @mostRecent = MAX(dateColumn)
FROM table
SELECT columns
FROM table
WHERE (DATEDIFF(day, dateColumn, @mostRecent) % n) = 0
1
这是CTE的理想情况:
DECLARE @LastDate datetime;
DECLARE @N int;
DECLARE @NCoefficientMax;
SELECT @N = 1, @NCoefficientMax = 10;
SELECT @LastDate = MyDate
FROM MyTable
ORDER BY MyDate DESC
WITH mycte
AS
(
SELECT DATEADD(dd, @N, @LastDate) AS NextDate, @N AS NCoefficient
UNION ALL
SELECT DATEADD(dd, @N, NextDate), @N + NCoefficient AS NCoefficient
FROM mycte WHERE NCoefficient < @NCoefficientMax
)
SELECT NextDate FROM mycte
其中@NCoefficientMax是N的最大系数。
相关问题
- 1. 日期选择器Jquery选择第一个日期后的第二个日期
- 2. 从日期栏选择日期列
- 3. 从日期集合中选择每个月的最后日期
- 4. jQuery日期选择器 - 从第一个日期选择器中选择后禁用日期
- 5. 定义从第一个日期选择器开始的第二个日期选择器的开始日期
- 6. 从“有效”日期表中获取第n个日期
- 7. 为每个日期选择多列
- 8. 选择*从表中选择两个日期之间的日期
- 9. 从日历中选择日期,然后日期内选择
- 10. TSQL上个月的第一个日期 - 仅限日期
- 11. 按日期选择多列,为每列
- 12. 在jQuery UI中将第二个日期限制为+日期日期选择器
- 13. 无法从日期选择器中的日期选择器中获取日期
- 14. 如何获得目标c中每个月的第n个星期日日期?
- 15. TSQL - 在给定日期之间递归选择日期
- 16. Linq - 从日期选择日期时间
- 17. 日期选择器从特定日期
- 18. TSQL选择记录的最后日期
- 19. 为什么第一个日期选取器从第二个日期选取器中选取日期值?
- 20. 使用Selenium webdriver从日期选择器中选择日期
- 21. 如何增加从日期选择器中选择的日期?
- 22. 从日期列表中选择最大不同日期
- 23. R - 如何从日期栏中选择最早的日期列?
- 24. C#获取下一个第N个星期五日期从今天的日期
- 25. 从appngine中选择日期
- 26. 从datepicker中选择日期
- 27. 如何选择第一列日期和第二列时间为日期时间
- 28. 在jQuery日期选择器中选择日期和高亮日期选择器
- 29. 基于第一个日期选择器的禁用日期
- 30. 如何选择每个日期的日期范围
您想如何使用它?目前还不清楚你实际想要做什么。 –
你能提供样本数据吗?如果你的日期都是工作日,而且n = 5,那么你很快就没有日期在你的表中。 –