我有一个表变量,我用特定范围(和dw,wk,mm,yy,dd值)之间的所有日期填充
然后我在开始日期之前加入到我的检查记录中。
SELECT CalDate
, DayN
, WeekN
, YearN
, DayOfMonthN
, [Start Date]
, [End Date]
, [Inspection Number]
FROM @Calendar AS dateInfo
LEFT JOIN [Inspection Records] AS IR
ON IR.[Start Date] = dateInfo.CalendarDate
这个工作正常,我现在需要做的事情(我必须这样做以传递给第三方应用程序...)获取[开始日期]和[结束日期]之间的所有日期并将它们作为逗号分隔列表添加到列中。
我已经看到了这个答案t-sql get all dates between 2 dates 这似乎完全符合我的需要。
我坚持如何构建我的脚本以使用该脚本获取[开始日期]和[结束日期]之间的所有日期并将它们添加到列中。
注意:我无法向数据库添加任何内容。
示例:(试图获取日期列)
<table>
<tr>
<td>CalDate</td>
<td>DayN</td>
<td>WeekN</td>
<td>YearN</td>
<td>DayOfMonthN</td>
<td>Start Date</td>
<td>End Date</td>
<td>Inspection Number</td>
<td>Dates</td>
</tr>
<tr>
<td>07-08-2014</td>
<td>5</td>
<td>32</td>
<td>2014</td>
<td>7</td>
<td>07-08-2014</td>
<td>11-08-2014</td>
<td>A0001</td>
<td>07-08-2014,08-08-2014,09-08-2014,10-08-2014,11-08-2014</td>
</tr>
</table>
&#13;
答案 0 :(得分:2)
SELECT CalDate
, DayN
, WeekN
, YearN
, DayOfMonthN
, [Start Date]
, [End Date]
, [Inspection Number]
, [Dates] = STUFF((
SELECT ',' + CONVERT(VARCHAR(10), C.CalDate,105)
FROM @Calendar AS C
WHERE C.CalDate BETWEEN IR.[Start Date] AND IR.[End Date]
FOR XML PATH('')
), 1, 1, '')
FROM @Calendar AS dateInfo
LEFT JOIN [Inspection Records] AS IR
ON IR.[Start Date] = dateInfo.CalendarDate
答案 1 :(得分:0)
这会将您的所有日期都放入名为@csv的变量中。 我确定你能够根据自己的需要进行修改.......
DECLARE @csv nVarchar(max)
SELECT @csv = COALESCE(@csv + ', ', '') + CONVERT(Nvarchar(20), yourDateColumn)
FROM yourDateTable