Wie verursacht man eine Verzögerung der Ausführung für eine bestimmte Anzahl von Sekunden?
Das macht es nicht:
WAITFOR DELAY '00:02';
Was ist das richtige Format?
Wie verursacht man eine Verzögerung der Ausführung für eine bestimmte Anzahl von Sekunden?
Das macht es nicht:
WAITFOR DELAY '00:02';
Was ist das richtige Format?
Antworten:
In der Dokumentation zuWAITFOR()
ist das erforderliche Zeichenfolgenformat nicht explizit angegeben.
Dies wird 2 Sekunden warten:
WAITFOR DELAY '00:00:02';
Das Format ist hh:mi:ss.mmm
.
Wie in anderen Antworten erwähnt, funktionieren alle folgenden Punkte für die standardmäßige stringbasierte Syntax.
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
Es gibt auch eine alternative Methode, um einen DATETIME
Wert zu übergeben. Du denkst vielleicht, ich verwechsle das damit WAITFOR TIME
, aber es funktioniert auch für WAITFOR DELAY
.
Überlegungen zum Bestehen DATETIME
:
'1900-01-01'
) .DATETIME
als a richtig zu formatieren VARCHAR
.So warten Sie 2 Sekunden:
--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
Ein Hinweis zum Warten auf TIME
vs DELAY
:
Haben Sie jemals bemerkt, WAITFOR TIME
dass ein bereits verstrichenes Datum, selbst wenn es nur eine Sekunde dauert, niemals zurückkehren wird? Hör zu:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
Leider WAITFOR DELAY
wird das gleiche tun, wenn Sie einen negativen DATETIME
Wert übergeben (ja, das ist eine Sache).
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
Ich würde jedoch weiterhin die Verwendung WAITFOR DELAY
über einen statischen Zeitraum empfehlen, da Sie jederzeit bestätigen können, dass Ihre Verzögerung positiv ist und dies so lange so bleibt, wie Ihr Code benötigt, um die WAITFOR
Anweisung zu erreichen .