标签
SQL Server
Redis
MySQL
其它
Oracle
外部链接
SQL Server 中的延时执行WAITFOR

1、语法

WAITFOR   {  
    DELAY 'time_to_pass'   
  | TIME 'time_to_execute'   
  | [ ( receive_statement ) | ( get_conversation_group_statement ) ]   
    [ , TIMEOUT timeout ]  
}

2、参数解释

2.1、DELAY参数:延时执行,最大可以延时24小时,time_to_pass等待的时间

DECLARE @star DATETIME = GETDATE()
SELECT [Id],[Name],[Sex] FROM [dbo].[User]
PRINT(CONVERT(VARCHAR(20),@star,120)) 
WAITFOR DELAY '00:00:05'
SELECT [Id],[Name],[Sex] FROM [dbo].[Customer]
PRINT(CONVERT(VARCHAR(20), GETDATE(),120)) 

-- 执行结果
-- (20 行受影响)
-- 2022-02-24 11:46:10
-- (17 行受影响)
-- 2022-02-24 11:46:15

上述两个查询语句相隔的时间正好是5s

2.2、TIME参数:定时执行

DECLARE @star DATETIME = GETDATE()
SELECT [Id],[Name],[Sex] FROM [dbo].[User]
PRINT(CONVERT(VARCHAR(20),@star,120)) 
WAITFOR TIME '11:59:00'
SELECT [Id],[Name],[Sex] FROM [dbo].[Customer]
PRINT(CONVERT(VARCHAR(20), GETDATE(),120)) 

-- 执行结果
-- (20 行受影响)
-- 2022-02-24 11:58:55
-- (17 行受影响)
-- 2022-02-24 11:59:00

从两个查询语句结果可以看到,第二语句是在WAITFOR TIME 设置的执行时间执行的,DELAY和TIME两个参数一定要使用正确,例如TIME如果设置的时间是过去的时间段,那边命令执行就要到第二天的这个点才能执行完毕了


说明:WAITFOR在一个命令中有效,即在一个命令中执行多个语句,在这些语句中插入了WAITFOR,这个命令的结果也要等WAITFOR执行完才会输出,不会因为等待把已执行语句就输出了

参考地址:https://docs.microsoft.com/zh-cn/sql/t-sql/language-elements/waitfor-transact-sql?redirectedfrom=MSDN&view=sql-server-ver15

扫一扫手机看
点击排行
订阅号
...