首页 > 解决方案 > 无论我的时区偏移量取决于一年中的时间,convert_timezone 'America/New_York' 都可以工作吗?

问题描述

我的时区是格林威治标准时间 -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 之间切换吗?或者,还有更好的方法?

谢谢

标签: timezoneamazon-redshifttimezone-offset

解决方案


考虑:

  • 2019-04-16T03:30:00.704Z(UTC) 在America/New_York2019-04-15T23:30:00.704-04:00

  • 2019-04-16T04:30:00.704Z(UTC) 在America/New_York2019-04-16T00:30:00.704-04:00

  • 2019-12-16T04:30:00.704Z(UTC) 在America/New_York2019-12-15T23:30:00.704-05:00

对于美国东部时间,4 月的日期为 -4,而 12 月的日期为 -5。换句话说,被转换的时间戳决定了应用哪个偏移量。

代码执行的日期和时间没有相关性


推荐阅读