如何等待2秒钟

如何导致延迟执行指定的秒数?

这不是这样做的:

WAITFOR DELAY '00:02'; 

有人可以帮助我的格式?

WAITFOR()的文档没有明确规定所需的string格式。

这将等待2秒钟:

 WAITFOR DELAY '00:00:02'; 

格式是hh:mi:ss.mmm

正如其他答案中提到的,以下所有内容都适用于标准的基于string的语法。

 WAITFOR DELAY '02:00' --Two hours WAITFOR DELAY '00:02' --Two minutes WAITFOR DELAY '00:00:02' --Two seconds WAITFOR DELAY '00:00:00.200' --Two tenths of a seconds 

还有一个传递DATETIME值的替代方法。 你可能会认为我把这个和WAITFOR TIME混淆了,但是它也适用于WAITFOR DELAY

考虑通过DATETIME

  • 它必须作为一个variables传递,所以它不再是一个很好的单线程。
  • 这个延迟被测量为自Epoch( '1900-01-01' )以来的时间。
  • 对于需要可变数量的延迟的情况,操作DATETIME要比正确格式化VARCHAR容易得多。

如何等待2秒钟:

 --Example 1 DECLARE @Delay1 DATETIME SELECT @Delay1 = '1900-01-01 00:00:02.000' WAITFOR DELAY @Delay1 --Example 2 DECLARE @Delay2 DATETIME SELECT @Delay2 = dateadd(SECOND, 2, convert(DATETIME, 0)) WAITFOR DELAY @Delay2 

等待TIMEDELAY注意事项:

你有没有注意到,如果你意外地通过了一个已经过去的date,即使只是一秒钟,它永远不会返回? 一探究竟:

 --Example 3 DECLARE @Time1 DATETIME SELECT @Time1 = getdate() WAITFOR DELAY '00:00:01' WAITFOR TIME @Time1 --WILL HANG FOREVER 

不幸的是,如果你传递一个负的DATETIME值(是的,那是事), WAITFOR DELAY将做同样的事情。

 --Example 4 DECLARE @Delay3 DATETIME SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0)) WAITFOR DELAY @Delay3 --WILL HANG FOREVER 

不过,我仍然build议在静态时间使用WAITFOR DELAY ,因为您始终可以确认您的延迟是积极的,并且可以保持这种状态,无论您的代码是否到达WAITFOR语句,都将保持这种状态。

这个怎么样?

 WAITFOR DELAY '00:00:02'; 

如果您有“00:02”,则将其解释为“小时:分钟”。