Kişi belirli bir saniye boyunca yürütmede gecikmeye nasıl neden olur?
Bunu yapmaz:
WAITFOR DELAY '00:02';
Doğru biçim nedir?
Kişi belirli bir saniye boyunca yürütmede gecikmeye nasıl neden olur?
Bunu yapmaz:
WAITFOR DELAY '00:02';
Doğru biçim nedir?
Yanıtlar:
İçin belgelerWAITFOR()
açıkça gerekli dize biçimini oluşturmuyor.
Bu 2 saniye bekleyecektir:
WAITFOR DELAY '00:00:02';
Biçimi hh:mi:ss.mmm
.
Diğer yanıtlarda belirtildiği gibi, aşağıdakilerin tümü standart dize tabanlı sözdizimi için çalışır.
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
Buna bir DATETIME
değer aktarmanın alternatif bir yöntemi de vardır . Bunu karıştırdığımı düşünebilirsiniz WAITFOR TIME
, ama aynı zamanda işe yarıyor WAITFOR DELAY
.
Geçme hususları DATETIME
:
'1900-01-01'
) 'dan bu yana geçen süre olarak ölçülür .DATETIME
düzgün biçimlendirmekten çok daha kolaydır VARCHAR
.2 saniye nasıl beklenir:
--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
Bekleyen ilgili not TIME
vs DELAY
:
Hiç bir an WAITFOR TIME
bile geçmiş bir tarihi geçerseniz , asla geri dönmeyeceğini fark ettiniz mi? Bunu kontrol et:
--Example 3
DECLARE @Time1 DATETIME
SELECT @Time1 = getdate()
WAITFOR DELAY '00:00:01'
WAITFOR TIME @Time1 --WILL HANG FOREVER
Ne yazık ki, WAITFOR DELAY
negatif bir DATETIME
değer iletirseniz aynı şeyi yapar (evet, bu bir şey).
--Example 4
DECLARE @Delay3 DATETIME
SELECT @Delay3 = dateadd(SECOND, -1, convert(DATETIME, 0))
WAITFOR DELAY @Delay3 --WILL HANG FOREVER
Ancak, WAITFOR DELAY
her zaman gecikmenizin pozitif olduğunu onaylayabileceğiniz ve bu kadar uzun süre kodunuzun WAITFOR
ifadeye ulaşması için bu şekilde kalacağından statik bir süre boyunca kullanmanızı öneririm .