我在SQL中有一个“时间”列,该列存储在“东部标准时间”中。我正在尝试将时间转换为UTC。我有时会计算DST,有时却无法计算。
以下面的代码为例:
DECLARE @Temp TABLE (T TIME);
INSERT INTO @Temp (T) VALUES ('15:00');
SELECT T,
GETDATE() AT TIME ZONE 'Eastern Standard Time',
CAST(T AS DATETIME) AT TIME ZONE 'Eastern Standard Time'
FROM @Temp
此查询的结果是:
15:00:00.0000000
2019-04-19 18:08:14.090 -04:00
1900-01-01 15:00:00.000 -05:00
所以问题是,如果两个时间都是“东部标准时间”,为什么一个日期的偏移量为-04:00(正确),而另一个日期的偏移量为-05:00(仅当我们在不在DST上
答案 0 :(得分:0)
问题在于,当将TIME数据类型转换为日期时间时,其日期为1/1/1900,该日期合法地位于-05:00偏移量中。为解决此问题,我将当前日期添加到TIME,现在一切正常。
CAST(T AS DateTime) + CAST(CAST(GETDATE() AS DATE) AS DateTime) AT TIME ZONE 'Eastern Standard Time'