首页 > 解决方案 > 如何获取两列日期(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 

标签: sql

解决方案


你需要一个标量函数

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

推荐阅读