ORACLE Query:デュアルからTIMEゾーン 'America/New_York'でextract(timezone_abbr FROM sysdate)を選択します。snowzoneデータベースからtimezone_abbrを抽出する方法はありますか?
私たちがORACLEで行っているのと同様に、snowzoneデータベースでtimezone_abbrを取得する方法はありますか?
ORACLE Query:デュアルからTIMEゾーン 'America/New_York'でextract(timezone_abbr FROM sysdate)を選択します。snowzoneデータベースからtimezone_abbrを抽出する方法はありますか?
私たちがORACLEで行っているのと同様に、snowzoneデータベースでtimezone_abbrを取得する方法はありますか?
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変換
に日を超える時間を含めるには残念ながら、スノーフレークは、タイムゾーン情報を格納していません - それは唯一のUTCからのオフセット格納します。
したがって、arunb2wの回答が有効です。 extract
にtzh
とtzm
のコンポーネントを使用すると、少し単純にすることができます。