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 DATETIMEnilai. Anda mungkin berpikir saya membingungkan ini WAITFOR TIME, tetapi juga berfungsi untuk WAITFOR DELAY.
Pertimbangan untuk lulus DATETIME:
'1900-01-01').DATETIMEdaripada 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 TIMEvs DELAY:
Pernahkah Anda memperhatikan bahwa jika Anda secara tidak sengaja melewati WAITFOR TIMEtanggal 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 DELAYakan melakukan hal yang sama jika Anda memberikan DATETIMEnilai 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 DELAYlebih 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 WAITFORpernyataan.