我想知道我可以在水平计算列中的两个日期之间连接的方式,例如:
date_ini,date_end,result
2016-04-01,2016-04-05,2016-04-01|2016-04-02|2016-04-03|2016-04-04|2016-04-05
2016-04-03,2016-04-06,2016-04-03|2016-04-04|2016-04-05|2016-04-06
2016-04-05,2016-04-05,2016-04-05
2016-04-05,2016-04-06,2016-04-05|2016-04-06
结果是我要创建的专栏
谢谢,
答案 0 :(得分:0)
这样的功能可以解决问题。请更改返回varchar的大小以满足您的需求。
CREATE FUNCTION dbo.date_concatenate(@start_date DATETIME, @end_date DATETIME)
RETURNS VARCHAR(255)
AS
BEGIN
DECLARE @result VARCHAR(255);
SET @result = '';
IF(@end_date < @start_date)
SET @result = 'Error: End Date can not be less than start date';
ELSE
BEGIN
WHILE (@start_date < @end_date)
BEGIN
SET @result = @result + CONVERT(varchar(10),@start_date,120) + '|'
SET @start_date = DATEADD(dd,1,@start_date)
END
END
SET @result = @result + CONVERT(varchar(10),@end_date,120)
RETURN @result
END