2017-12-08 6 views

答えて

2

Oracleと同様に、snowflakeからタイムゾーンの省略形を直接抽出する方法はありません。 しかし、2つのタイムゾーンの差を計算することで見つけることができます。

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 

上記のクエリは、あなたのタイムスタンプがアメリカ/ NEWYORKであり、それはそれはグローバルな時間帯であるため、UTCに変換しようと想定しています。

変換後、差異が4の場合はタイムゾーンがEDTになり、差異が5の場合はタイムゾーンがESTになります。

EDIT:原因UTC変換

0

に日を超える時間を含めるには残念ながら、スノーフレークは、タイムゾーン情報を格納していません - それは唯一のUTCからのオフセット格納します。

したがって、arunb2wの回答が有効です。 extracttzhtzmのコンポーネントを使用すると、少し単純にすることができます。

関連する問題