【问题标题】:Convert Time Zone in Amazon Redshift在 Amazon Redshift 中转换时区
【发布时间】:2015-07-01 14:19:38
【问题描述】:

我在红移表中有一个日期时间列。它包含 UTC 格式的日期。 因此,当我基于 UTC+5:30/UTC+4:30 之类的 time_zone 进行查询时,我想将表 datetime 列转换为选择的 time_zone 并继续进行。它给了我错误的结果。

使用此方法: CONVERT_TIMEZONE (['source_zone',] 'target_zone', 'timestamp')

查询类型 1:输入错误,正确答案

SELECT id, convert_timezone('UTC+5:30','UTC', date) as converted_time, ingest_date
FROM table_name
WHERE conditions

查询类型 2:输入正确,答案错误 -> 再次从列中的日期中减去 5:30

SELECT id , convert_timezone('UTC','UTC+5:30',ingest_date) as converted_time, ingest_date
FROM table_name
WHERE conditions    

查询类型 3:输入错误,正确答案

SELECT id,  convert_timezone('UTC','UTC-5:30',ingest_date) as converted_time, ingest_date
FROM table_name
WHERE conditions    

如何将 UTC 列转换/解析为选定的时区?

【问题讨论】:

    标签: postgresql datetime amazon-redshift


    【解决方案1】:

    在 Redshift 中,CONVERT_TIMEZONE 将偏移量解释为与 UTC 的时间。例如,偏移量 +2 相当于 UTC–2,偏移量 -2 相当于 UTC+2。 CONVERT_TIMEZONE 在计算偏移量时不使用前缀字符串,即使该字符串表示一个有效的时区。例如,“NEWZONE+2”、“PDT+2”和“GMT+2”都具有相同的结果。如果字符串不包含偏移量,则它必须表示有效的时区,否则 CONVERT_TIMEZONE 会返回错误。

    为了转换 time_zone,如果您发送“UTC+5:30/UTC-4:30”,亚马逊将其解释为“UTC-5:30 / UTC+4:30”。

    现在您可以将 + 转换为 - ,反之亦然,然后再将其发送到 redshift。

    (http://docs.aws.amazon.com/redshift/latest/dg/CONVERT_TIMEZONE.html)

    【讨论】:

      猜你喜欢
      • 2015-01-03
      • 1970-01-01
      • 2018-11-03
      • 2021-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多