Bagaimana seseorang menyebabkan keterlambatan dalam eksekusi untuk jumlah detik tertentu?
Ini tidak melakukannya:
WAITFOR DELAY '00:02';
Apa format yang benar?
Bagaimana seseorang menyebabkan keterlambatan dalam eksekusi untuk jumlah detik tertentu?
Ini tidak melakukannya:
WAITFOR DELAY '00:02';
Apa format yang benar?
Jawaban:
Dokumentasi untukWAITFOR()
tidak secara eksplisit menjabarkan format string yang diperlukan.
Ini akan menunggu selama 2 detik:
WAITFOR DELAY '00:00:02';
Formatnya adalah hh:mi:ss.mmm
.
Seperti disebutkan dalam jawaban lain, semua yang berikut ini akan berfungsi untuk sintaks berbasis string standar.
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
Ada juga metode alternatif untuk memberikan DATETIME
nilai. Anda mungkin berpikir saya membingungkan ini WAITFOR TIME
, tetapi juga berfungsi untuk WAITFOR DELAY
.
Pertimbangan untuk lulus DATETIME
:
'1900-01-01'
).DATETIME
daripada memformat a VARCHAR
.Cara menunggu 2 detik:
--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
Catatan tentang menunggu TIME
vs DELAY
:
Pernahkah Anda memperhatikan bahwa jika Anda secara tidak sengaja melewati WAITFOR TIME
tanggal yang telah berlalu, bahkan hanya dalam sedetik, itu tidak akan pernah kembali? Saksikan berikut ini:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
Sayangnya, WAITFOR DELAY
akan melakukan hal yang sama jika Anda memberikan DATETIME
nilai negatif (ya, itu hal).
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
Namun, saya masih akan merekomendasikan menggunakan WAITFOR DELAY
lebih dari waktu statis karena Anda selalu dapat mengkonfirmasi keterlambatan Anda positif dan akan tetap seperti itu selama berapa lama waktu yang dibutuhkan kode Anda untuk mencapai WAITFOR
pernyataan.