我在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时才是正确的)
发布于 2019-04-20 03:05:33
问题是,TIME数据类型在转换为datetime时,日期为1/1/1900,该日期在-05:00偏移量中是合法的。为了解决这个问题,我将当前日期添加到时间中,现在一切都按预期运行。
CAST(T AS DateTime) + CAST(CAST(GETDATE() AS DATE) AS DateTime) AT TIME ZONE 'Eastern Standard Time'https://stackoverflow.com/questions/55766027
复制相似问题