【问题标题】:TimeZone issue in Redshift when converting UTC to CST将 UTC 转换为 CST 时 Redshift 中的时区问题
【发布时间】:2021-11-12 04:47:05
【问题描述】:

在 redshift 数据库中将 UTC 转换为 CST 时,我们发现了 1 小时的差异。我们使用了不同的解决方法,但没有获得预期的结果。

1) convert_timezone 函数没有给我们所需的更改。

我们可以在集群级别执行任何方法,例如启动新集群并从快照恢复。您能否建议您为此使用的任何解决方法/解决方案。

干杯!!

【问题讨论】:

  • 请在您的问题中添加 1 行代码来演示问题(使用硬编码的时间戳?)

标签: amazon-redshift


【解决方案1】:

我认为,1 小时的差异一定是因为 Day-Light-Saving aka (DST) 调整。

据我所知Redshift supports 两种timezonesDST 和没有DST

确保在需要 DST 时间的情况下使用带 DST 的时区名称,如果需要不影响 DST 时间,请确保使用时区名称。

例如。 CST 是没有 DST 的美国中部的时区,CDT 是有 DST 的美国中部的时区。

使用夏令时

select convert_timezone('CDT',  '2019-01-15 04:47:22');         convert_timezone
-------------
2019-01-14 23:47:22

没有夏令时

 select convert_timezone('CST',  '2019-01-15 04:47:22');         convert_timezone
 ------------
 2019-01-14 22:47:22

我希望这能回答你的问题。

【讨论】:

    【解决方案2】:

    正如其他 question 中所述,自动处理夏令时的最佳方法是使用时区名称,而不是 CST/CDT

    在你的例子中,做类似的事情

    convert_timezone('UTC', 'US/Central', my_date_field)  -- GOOD
    

    不要这样做:convert_timezone('UTC', 'CST', my_date_field) -- BAD

    https://docs.aws.amazon.com/redshift/latest/dg/CONVERT_TIMEZONE.html

    【讨论】:

      猜你喜欢
      • 2021-04-10
      • 2014-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 2021-10-21
      • 2018-07-01
      • 1970-01-01
      相关资源
      最近更新 更多