รับส่วนประกอบดังนี้
DECLARE @D DATE = '2013-10-13'
DECLARE @T TIME(7) = '23:59:59.9999999'
วิธีที่ดีที่สุดในการรวมพวกเขาเพื่อสร้างDATETIME2(7)
ผลลัพธ์ที่มีค่า'2013-10-13 23:59:59.9999999'
คืออะไร?
บางสิ่งที่ไม่ทำงานแสดงอยู่ด้านล่าง
SELECT @D + @T
วันที่ตัวดำเนินการชนิดข้อมูลไม่ถูกต้องสำหรับตัวดำเนินการเพิ่ม
SELECT CAST(@D AS DATETIME2(7)) + @T
ตัวถูกดำเนินการชนิดข้อมูล datetime2 ไม่ถูกต้องสำหรับตัวดำเนินการเพิ่ม
SELECT DATEADD(NANOSECOND,DATEDIFF(NANOSECOND,CAST('00:00:00.0000000' AS TIME),@T),@D)
ฟังก์ชั่น Dateiff ส่งผลให้เกิดการล้น จำนวนของส่วนของวันที่ที่แยกอินสแตนซ์วันที่ / เวลาสองรายการมีขนาดใหญ่เกินไป ลองใช้ Dateiff ด้วยส่วนที่แม่นยำน้อยกว่า
* ล้นสามารถหลีกเลี่ยงได้ในฐานข้อมูล SQL Azure และ SQL Server 2016 DATEDIFF_BIG
โดยใช้
SELECT CAST(@D AS DATETIME) + @T
วันที่และเวลาของชนิดข้อมูลไม่เข้ากันในตัวดำเนินการเพิ่ม
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
ส่งคืนผลลัพธ์ แต่สูญเสียความแม่นยำ
2013-10-13 23:59:59.997