Sql 如果我在WHERE子句中使用DateTime根据DATETIMEOFSET字段筛选行,会发生什么情况?
如果我在WHERE子句中使用DateTime根据DATETIMETOFFSET字段筛选行,会发生什么情况 SQL server是否将DateTime字段转换为偏移量为零的DateTimeOffset或 例如:Sql 如果我在WHERE子句中使用DateTime根据DATETIMEOFSET字段筛选行,会发生什么情况?,sql,tsql,datetime,datetimeoffset,Sql,Tsql,Datetime,Datetimeoffset,如果我在WHERE子句中使用DateTime根据DATETIMETOFFSET字段筛选行,会发生什么情况 SQL server是否将DateTime字段转换为偏移量为零的DateTimeOffset或 例如: DECLARE @myTime As DateTime = GetDAte() SELECT * FROM foo WHERE @myTime > dbo.foo.TimeStampOffset -- TimeStampOffset is a DateTimeOffset fie
DECLARE @myTime As DateTime = GetDAte()
SELECT *
FROM foo
WHERE @myTime > dbo.foo.TimeStampOffset -- TimeStampOffset is a DateTimeOffset field in foo table
将
DATETIME
或DATETIME2
与DATETIMEOFFSET
值进行比较时,会发生隐式转换
DATETIMEOFFSET->DATETIME2
将日期
和时间
复制到日期时间2
值,并截断时区
。当DATETIME2(n)
值的精度大于DATETIMEOFFSET(n)
值的精度时,将截断小数秒以进行拟合。()
DATETIMEOFFSET->DATETIME
复制日期和时间值,并截断时区。当datetimeoffset(n)值的小数精度大于三位数时,该值将被截断。()
DATETIMEOFFSET->DATETIME或DATETIME2
当DATETIME
或DATETIME2
值转换为DATETIMEOFFSET
时,原始值被视为UTC
值,偏移量将为+00:00
。(日期时间和日期时间2类型不存储时区的偏移量)
发生了什么事?
如果服务器的时区不是+00:00,则比较可能会导致误报和否定->结果将不是所需的结果
如果要与当前时间进行比较,请将@myTime
的声明更改为将@myTime声明为DateTimeOffset=SysDateTimeOffset()
检查问题