Aşağıdaki bileşenler göz önüne alındığında
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Değerle DATETIME2(7)
sonuç üretmek için bunları birleştirmenin en iyi yolu nedir '2013-10-13 23:59:59.9999999'
?
Bazı şeyler yapma işi aşağıda listelenmiştir.
SELECT @D + @T
İşlenen veri türü tarihi, işleç ekleme için geçersiz.
SELECT CAST(@D AS DATETIME2(7)) + @T
İşlenen veri türü datetime2, ekleme işleci için geçersiz.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
Datediff işlevi taşmaya neden oldu. İki tarih / saat örneğini ayıran tarih bölümlerinin sayısı çok fazla. Datediff'i daha az kesin bir tarih noktasıyla kullanmayı deneyin.
* Kullanarak, Azure SQL Veritabanı ve SQL Server 2016'da taşma önlenebilir DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Tarih ve saat veri türleri add operatöründe uyumlu değil.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Bir sonuç verir, ancak hassaslığını yitirir
2013-10-13 23:59:59.997