Yanıtlar:
Burada gerçek bir fark yoktur, ancak DATETIME2
değerleri veya DATETIME2
değerleri döndüren işlevleri kullanmaya başladığınızda hata alırsınız.
SELECT SYSDATETIME() - 1 AS [Incompatible]
Msg 206, Seviye 16, Durum 2, Satır 17 İşlenen türü çakışması: datetime2 int ile uyumsuz
Bunlar için, tarih matematik işlevlerini kullanmanız gerekir.
SELECT DATEADD(DAY, -1, SYSDATETIME()) AS [Compatible]
Aaron Bertrand, Bad Habits to Kick dizisinde bu konuyu kısaca anlatıyor .
Diğer yanıtları birinde iddialarının aksine, her iki seçeneğin resmen desteklenmektedir ve belgelenmiş SQL Server tarafından: datetime - number
öyle değil tanımsız davranış.
Büyük avantajı
DATEADD(d, -2, GETUTCDATE())
o olduğu gerçeğidir kendi kendini belgeleyen : It amacı hemen göze çarpmaktadır.
GETUTCDATE() - 2
diğer yandan, datetime - number
işlemin tanımını bilen okuyucuya güvenir . Evet, şu anda deyimsel T-SQL olabilir, ancak bunun artık desteklenmemesi datetime2
, SQL Server geliştiricilerinin gelecek nesillerinin artık ona aşina olmayabileceği anlamına geliyor.
date
olarak eklenen 2008 (?) Sürümünden önceki tarih saat türleri ). Biraz dağınık.