Sql server GetDate()是否为事务中循环内的每个迭代重新计算?

Sql server GetDate()是否为事务中循环内的每个迭代重新计算?,sql-server,tsql,getdate,Sql Server,Tsql,Getdate,我有一个场景,在一个事务中循环通过一个resultset,我需要在表中为通过resultset的每次迭代插入一个唯一的datetime值-GetDate()是每次都重新计算,还是只在第一次计算,然后在循环的每次迭代中都相同 我的伪代码如下: BEGIN TRANSACTION GO DECLARE @ID INT DECLARE @table TABLE (/* Columns */) WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED

我有一个场景,在一个事务中循环通过一个resultset,我需要在表中为通过resultset的每次迭代插入一个唯一的datetime值-GetDate()是每次都重新计算,还是只在第一次计算,然后在循环的每次迭代中都相同

我的伪代码如下:

BEGIN TRANSACTION
GO

DECLARE @ID INT 
DECLARE @table TABLE (/* Columns */) 

WHILE (SELECT COUNT(*) FROM @table WHERE PROCESSED = 0) > 0
      BEGIN

            SELECT TOP 1 @ID = ID FROM @table WHERE PROCESSED = 0 

            -- INSERT GetDate() into child table at this point. 
            -- Will GetDate() be re-evaluated each time? 

            UPDATE @table SET PROCESSED = 1 WHERE ID = @ID 

      END

END TRANSACTION
GO
提前谢谢

是。


如果您想避免重新计算它,请将其值存储在循环之前的变量中,然后插入该变量。

顺便说一句,您可能希望使用GetUtcDate()而不是GetDate()来避免不明确的夏令时时间戳。您到底为什么要进行循环?改为执行基于集合的插入。