需要创建一个带有日期列表的IN子句。列表需要按降序排列。我创建了一个名为@cols的变量,并尝试使用以下代码填充该变量:
declare @end date='2016/05/30'
declare @begin date = DATEADD(month, DATEDIFF(month, 0, @end), 0) ;
declare @curdate date = @end; -- start on the last day
print @curdate;
print @begin;
DECLARE @cols NVARCHAR (MAX)
while @curdate >=@begin -- goes from end of the month to beginning of the month
begin
select @cols = @cols + ',[' + CONVERT(NVARCHAR, @curdate, 106) + ']';
select @curdate = DATEADD(DAY,-1,@curdate ) -- subtract a day
end
print @cols;
print @curdate;
print @begin;
我希望得到5/30 / 16、5 / 29 / 16、5 / 28/16等(当然格式正确)。该代码运行没有错误,但是@cols始终为空。
得到a的原因NULL
@Cols
是因为在进入while循环之前尚未为其分配值。它仍然是NULL
,并且NULL
+任何= NULL
。
为了解决这个问题,您可以@Cols
在while循环之前设置等于空字符串:
DECLARE @cols NVARCHAR (MAX) = ''
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句