sql - 如何获取两列日期(fromDate 和 toDate)之间的所有日期。并且获得的日期必须在单行中,以逗号分隔
问题描述
LeaveTypeID FromDate ToDate
1 2020-09-12 00:00:00.000 2020-09-15 00:00:00.000
从上表中,我需要 FromDate 和 ToDate 之间的所有日期。我期待下面的输出。我使用 sql serve 2019。
Date
2020-09-12,2020-09-13,2020-09-14,2020-09-15
解决方案
你需要一个标量函数
create function dbo.fn_PrintDates(@start date, @end date)
return nvarchar(max)
as
begin
decalre @output nvarchar(max)=convert(varchar,@start,23);
while DateDiff(day,@start,@end) >=0
begin
@start= dateadd(day,@count,@datestart)
@output =concat(@output,',',convert(varchar,@start,23);
end
return @output;
end
然后你按如下方式使用它
select dbo.fn_printdates(fromdate,todate)
from tableA
推荐阅读
- linux - Linux 压缩所有日志文件
- c# - 无法使用 C# 和 C++ 创建相同的 TCP 消息
- r - 无法通过 Big Sur 上的 devtools 安装 Bookdown
- java - Webclient post call 从未在 Intellij 中收到响应
- groovy - Spock,捕获参数并在测试的其他部分使用它们
- c - Printing address of a variable as a string
- excel - 从不同帐户 VBA 发送电子邮件
- node.js - 如何使 watch() 函数在 mongoDB 中工作?
- excel - 复制具有动态名称的工作簿时,如何避免下标超出范围错误 9?
- python - 如何用 x 和 y 坐标绘制二维数据(图像)