gpt4 book ai didi

sql-server - SQL循环将日期添加到表不起作用

转载 作者:行者123 更新时间:2023-12-05 08:20:53 24 4
gpt4 key购买 nike

我有一个应该循环 30 次的 WHILE 循环,但由于某种原因它似乎只循环了 15 次。

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 )

是否有返回 30 的 DATEDIFF (d, @dateInsert , @dateLoopTo ) 不起作用的原因?

最佳答案

在循环的每一步,您都在递增两者 cnt@DateInsert。因此,您正在以 2 秒的速度通过。

如何更清楚地编写代码:

WHILE @cnt <= 30

关于sql-server - SQL循环将日期添加到表不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34395556/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com