我的时区是格林尼治标准时间的-4或-5,具体取决于一年中的时间。当前是-4。
如果我在下面使用此代码,当我们更改为-5时会自动切换吗?
select convert_timezone('America/New_York', CAST(json_extract_path_text('{"timestamp":"2019-04-16T03:30:00.704Z"}', 'timestamp') as TIMESTAMP));
当前上面的行返回日期为2019-04-15。
但是,如果我在12月打这个电话(请注意时间为+1小时), 它仍会返回日期为2019-04-15。
select convert_timezone('America/New_York', CAST(json_extract_path_text('{"timestamp":"2019-04-16T04:30:00.704Z"}', 'timestamp') as TIMESTAMP));
换句话说,它会在没有干预的情况下在EDT和EST之间切换吗?还是有更好的方法?
谢谢
答案 0 :(得分:3)
考虑:
2019-04-16T03:30:00.704Z
中的 America/New_York
(UTC)是2019-04-15T23:30:00.704-04:00
2019-04-16T04:30:00.704Z
中的 America/New_York
(UTC)是2019-04-16T00:30:00.704-04:00
2019-12-16T04:30:00.704Z
中的 America/New_York
(UTC)是2019-12-15T23:30:00.704-05:00
在美国东部时间,4月的日期为-4,而12月的日期为-5。换句话说,要转换的时间戳就是确定要应用哪个偏移量的原因。
代码执行的日期和时间不相关 。