有没有办法从雪花数据库中提取timezone_abbr?

时间:2017-12-08 11:08:49

标签: snowflake-datawarehouse

ORACLE查询:从双重选择提取(timezone_abbr FROM sysdate at TIME zone' America / New_York');

有没有办法在雪花数据库中获取timezone_abbr,类似于我们在ORACLE中所做的事情?

2 个答案:

答案 0 :(得分:2)

没有直接的方法从类似于Oracle的雪花中提取时区缩写。 但我们可以通过计算两个时区之间的差异来找到它。

SELECT cast(your_column AS TIMESTAMP) yourtimecolumn
    ,decode(
        extract(
           hour FROM 
            convert_timezone('America/New_York', 'UTC', 
              cast(your_column AS TIMESTAMP)
            )
          ) - 
      extract(hour FROM cast(your_column AS TIMESTAMP)
      ), 
  4, 'EDT', -20, 'EDT', 5, 'EST', -19, 'EST') timezone
FROM your_table
WHERE cast(your_column AS TIMESTAMP) IS NOT NULL 
limit 100

上述查询假设您的时间戳位于America / Newyork,并尝试将其转换为UTC,因为这是全球时区。

转换后,如果差异为4,则通常的方式是时区为EDT,如果差值为5,则时区为EST。

编辑:包含因UTC转换而超过一天的时间

答案 1 :(得分:1)

不幸的是,Snowflake不存储时区信息 - 它只存储UTC的偏移量。

所以arunb2w的答案有效。将extracttzhtzm组件结合使用,可以使其更简单。