Diberikan komponen-komponen berikut
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
Apa cara terbaik menggabungkan mereka untuk menghasilkan DATETIME2(7)
hasil dengan nilai '2013-10-13 23:59:59.9999999'
?
Beberapa hal yang tidak berfungsi tercantum di bawah ini.
SELECT @D + @T
Operan tanggal tipe data tidak valid untuk operator tambahan.
SELECT CAST(@D AS DATETIME2(7)) + @T
Operand tipe data datetime2 tidak valid untuk operator tambahan.
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
Fungsi Dateiff mengakibatkan overflow. Jumlah suku cadang yang memisahkan dua instance tanggal / waktu terlalu besar. Cobalah menggunakan Dateiff dengan bagian data yang kurang tepat.
* Overflow dapat dihindari di Azure SQL Database dan SQL Server 2016, menggunakan DATEDIFF_BIG
.
SELECT CAST(@D AS DATETIME) + @T
Tipe data datetime dan waktu tidak kompatibel di add operator.
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
Mengembalikan hasil tetapi kehilangan presisi
2013-10-13 23:59:59.997