使用 StackOverflow 上的另一篇文章(如何在 SQL Server 2005 中根据月份拆分日期范围)我运行了一条SELECT
语句,该语句按月份拆分日期范围并DateFrom, DateTo
在 SQL 中返回 2 列 ()。
DECLARE @SDate DATE = '2012/08/01'
DECLARE @EDate DATE = '2013/09/01'
SELECT
DATEADD(MONTH, n.Number, @SDate) as DateFrom,
DATEADD(day, -1, DATEADD(MONTH, n.Number, DATEADD(YEAR,-1,@EDate))) as DateTo
FROM
master.dbo.spt_values n
WHERE
n.Number < DATEDIFF(MONTH, @SDate, @EDate)
AND n.Type = 'P'
我现在需要将返回的每一行添加到一个字符串中,用|
( Dateto|Datefrom
) 分隔列,每行用,
.
例如,如果您运行上面的代码,结果将是(仅对于此示例,我只使用前 4 行,但我需要将它们全部放在一个字符串中):
R | Date From | Date To
1 | 2012-08-01 | 2012-08-31
2 | 2012-09-01 | 2012-09-30
3 | 2012-10-01 | 2012-10-30
4 | 2012-11-01 | 2012-11-30
代码:
DECLARE @stralldates VarChar(MAX)
/* SET @stralldates = INSERTCODE */
PRINT @stralldates
我需要打印返回:
2012-08-01|2012-08-31,2012-10-01|2012-10-30,2012-10-01|2012-10-30,2012-11-01|2012-11-30
我已经尝试了 StackOverflow 上其他类似问题的几个建议(例如CONCAT
),但没有成功。
任何帮助或建议将不胜感激。