我有一個WHILE循環,應循環30次,但由於某種原因,它似乎只循環15次。SQL循環添加日期到表不工作
SQL:
DECLARE @dateInsert date
DECLARE @dateLoopTo date
DECLARE @cnt INT = 0;
SET @dateInsert='2016-01-01'
SET @dateLoopTo='2016-01-31'
WHILE @cnt <= DATEDIFF (d, @dateInsert , @dateLoopTo)
BEGIN
print CONVERT(VARCHAR(10),@dateInsert) + ' '+ CONVERT(VARCHAR(2),@cnt)
SET @dateInsert = DATEADD(d, 1,@dateInsert)
SET @cnt = @cnt + 1;
END
結果:
2016-01-01 0,
2016-01-02 1,
2016-01-03 2,
2016-01-04 3,
2016-01-05 4,
2016-01-06 5,
2016-01-07 6,
2016-01-08 7,
2016-01-09 8,
2016-01-10 9,
2016-01-11 10,
2016-01-12 11,
2016-01-13 12,
2016-01-14 13,
2016-01-15 14,
當我嘗試改變DATEDIFF(d,@dateInsert,@dateLoopTo)至30 SQL似乎工作。
WHILE @cnt <= 30-- DATEDIFF (d, @dateInsert , @dateLoopTo)
是有原因的DATEDIFF(d,@dateInsert,@dateLoopTo)返回30不起作用?
既然你在循環中改變'dateInsert',我看不出'DATEDIFF(d,@dateInsert,@dateLoopTo) '在第一次迭代後仍然會返回30。 –