鉴于以下组件
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)
datediff函数导致溢出。分隔两个日期/时间实例的日期部分的数量太大。尝试将datediff与不太精确的datepart一起使用。
*使用可以避免在Azure SQL数据库和SQL Server 2016中发生溢出DATEDIFF_BIG
。
SELECT CAST(@D AS DATETIME) + @T
数据类型datetime和time在add运算符中不兼容。
SELECT CAST(@D AS DATETIME) + CAST(@T AS DATETIME)
返回结果但失去精度
2013-10-13 23:59:59.997