¿Cómo se causa un retraso en la ejecución durante un número específico de segundos?Cómo esperar durante 2 segundos
Esto no lo hace:
WAITFOR DELAY '00:02';
¿Puede alguien ayudarme con el formato?
¿Cómo se causa un retraso en la ejecución durante un número específico de segundos?Cómo esperar durante 2 segundos
Esto no lo hace:
WAITFOR DELAY '00:02';
¿Puede alguien ayudarme con el formato?
The documentation for WAITFOR()
no establece explícitamente el formato de cadena requerido.
Esto va a esperar durante 2 segundos:
WAITFOR DELAY '00:00:02';
El formato es hh:mi:ss.mmm
.
¿Qué tal esto?
WAITFOR DELAY '00:00:02';
Si tiene "00:02" está interpretando eso como Horas: Minutos.
Como se menciona en otras respuestas, todo lo siguiente funcionará para la sintaxis estándar basada en cadenas.
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
También hay un método alternativo para pasarle un valor de DATETIME
. Puede pensar que estoy confundiendo esto con WAITFOR TIME
, pero también funciona para WAITFOR DELAY
.
Consideraciones para pasar DATETIME
:
'1900-01-01'
).DATETIME
que formatear correctamente un VARCHAR
.Cómo esperar 2 segundos:
--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
Una nota sobre la espera de TIME
vs DELAY
:
¿Alguna vez ha notado que si accidentalmente se pasa WAITFOR TIME
una fecha que Ya pasó, incluso por solo un segundo, nunca volverá? Compruébelo usted mismo:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
Desafortunadamente, WAITFOR DELAY
va a hacer lo mismo si se le pasa un valor negativo DATETIME
(sí, eso es una cosa).
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
Sin embargo, aun así, recomendaría el uso de WAITFOR DELAY
durante un tiempo estático porque siempre se puede confirmar su retraso es positivo y va a permanecer así durante todo el tiempo que tarda el código para llegar a la declaración WAITFOR
.
Parece que el hilo espera mucho más de 2 segundos. Me doy cuenta de que puede llevar más de 2 segundos para que el hilo continúe, pero está tardando alrededor de 1 minuto cuando se ejecuta en un DB local que estoy utilizando y no tengo otra actividad en marcha. – ChadD
Esto realmente esperará exactamente 2 minutos. –
posible duplicado de [Comando inactivo en T-SQL?] (Http://stackoverflow.com/questions/664902/sleep-command-in-t-sql) – Jesse