Como causar um atraso na execução por um número especificado de segundos?
Isso não faz:
WAITFOR DELAY '00:02';
Qual é o formato correto?
sql-server
sql-server-2008
tsql
Chade
fonte
fonte
Respostas:
A documentação para
WAITFOR()
não apresenta explicitamente o formato de string necessário.Isso irá esperar por 2 segundos:
O formato é
hh:mi:ss.mmm
.fonte
Conforme mencionado em outras respostas, todos os itens a seguir funcionarão para a sintaxe padrão baseada em string.
Há também um método alternativo de passar um
DATETIME
valor para ele. Você pode pensar que estou confundindo issoWAITFOR TIME
, mas também funcionaWAITFOR DELAY
.Considerações para aprovação
DATETIME
:'1900-01-01'
).DATETIME
do que formatar corretamente aVARCHAR
.Como esperar por 2 segundos:
Uma observação sobre a espera de
TIME
vsDELAY
:Você já reparou que, se acidentalmente passar
WAITFOR TIME
uma data que já passou, mesmo que por apenas um segundo, ela nunca voltará? Confira:Infelizmente,
WAITFOR DELAY
fará o mesmo se você passar umDATETIME
valor negativo (sim, isso é uma coisa).No entanto, eu ainda recomendaria o uso
WAITFOR DELAY
durante um período estático, pois você sempre pode confirmar que seu atraso é positivo e permanecerá assim por quanto tempo o seu código levar para chegar àWAITFOR
declaração.fonte
Que tal agora?
Se você tem "00:02", está interpretando isso como Horas: Minutos.
fonte
Tente este exemplo:
Este é o script inteiro:
fonte