■ はじめに
https://dk521123.hatenablog.com/entry/2024/10/09/155708
で、以下「SQL文」でトラブルシュートしていたのだが、 QUERY_HISTORYビューのSTART_TIMEとEND_TIME(特にSTART_TIME) の時間帯が全く身に覚えない時間帯で実行されていて調べてみたら SnowflakeのTimezoneのデフォルトがUTCじゃないことを知った。 そこで、今回は、その調査結果も踏まえて、 SnowflakeのタイムゾーンTimezoneに関して、纏めてみた
SQL文
SELECT CONVERT_TIMEZONE('UTC', 'Asia/Tokyo', START_TIME), CONVERT_TIMEZONE('UTC', 'Asia/Tokyo', END_TIME), * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY ...
目次
【0】注意点:SnowflakeのデフォルトTimezone 【1】デフォルトTimezone の調べ方 【2】Timezone を変更するには 1)一時的に変更する 2)恒久的に変更する 【3】Timezone に関する関数 1)CONVERT_TIMEZONE
【0】注意点:SnowflakeのデフォルトTimezone
* SnowflakeのデフォルトTimezone は、 JSTでもなく、UTCでもなく、 『America/Los_Angeles(米国太平洋標準時 PST; Pacific Standard Time)』
https://www.hulft.com/help/ja-jp/WebFT-V3/COM-ADM/Content/WEBFT_ADM_COM/TimeZone/timezonelist.htm
【1】デフォルトTimezone の調べ方
SHOW PARAMETERS LIKE 'TIMEZONE'; # default は UTC じゃなく「America/Los_Angeles」... |-------------+-----------------------+-------------------------+-----+------------| | key | value | default | level | description | |-------------+-----------------------+-------------------------+-----+------------| | TIMEZONE | America/Los_Angeles | America/Los_Angeles | | time zone |
https://docs.snowflake.com/ja/sql-reference/parameters#timezone
アカウント/ユーザ/セッション単位で確認
SHOW PARAMETERS LIKE 'TIMEZONE' IN ACCOUNT; SHOW PARAMETERS LIKE 'TIMEZONE' IN USER; SHOW PARAMETERS LIKE 'TIMEZONE' IN SESSION;
【2】Timezone を変更するには
1)一時的に変更する
-- TIMEZONE を UTC時間に設定 ALTER SESSION SET TIMEZONE = 'UTC';
https://docs.snowflake.com/ja/user-guide/date-time-examples.html
2)恒久的に変更する
-- アカウント単位でTIMEZONE を UTC時間に設定 ALTER ACCOUNT SET TIMEZONE = 'UTC';
https://docs.snowflake.com/ja/sql-reference/sql/alter-account
補足:ユーザ単位での変更
-- 用途はあんまりなさそうだが -- ユーザ単位でTIMEZONE を UTC時間に設定 ALTER USER SET TIMEZONE = 'UTC';
https://docs.snowflake.com/ja/sql-reference/sql/alter-user
【3】Timezone に関する関数
1)CONVERT_TIMEZONE
* タイムスタンプを別のタイムゾーンに変換
https://docs.snowflake.com/ja/sql-reference/functions/convert_timezone
構文
CONVERT_TIMEZONE( <source_tz> , <target_tz> , <source_timestamp_ntz> ) CONVERT_TIMEZONE( <target_tz> , <source_timestamp> )
サンプル
SELECT CONVERT_TIMEZONE('America/Los_Angeles', 'Asia/Tokyo', START_TIME) AS START, CONVERT_TIMEZONE('America/Los_Angeles', 'Asia/Tokyo', END_TIME) AS END, * FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY ORDER BY START_TIME DESC LIMIT 100 ;
参考文献
https://qiita.com/yappoi3/items/6a7dfbc9f82efccb3cfb
https://zenn.dev/kommy339/articles/f84312dda0d7d8
関連記事
Snowflake ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/02/130111
Snowflake ~ 入門編 / Hello world ~
https://dk521123.hatenablog.com/entry/2021/11/22/212520
Snowflake ~ 基本編 / データ型 ~
https://dk521123.hatenablog.com/entry/2021/12/16/095524
Snowflake ~ 基本編 / キャスト ~
https://dk521123.hatenablog.com/entry/2021/12/15/162658
Snowflake ~ 日時関連 ~
https://dk521123.hatenablog.com/entry/2022/06/17/113003
Snowflake ~ 日時関連 / 日時取得関数 ~
https://dk521123.hatenablog.com/entry/2022/09/02/092144
Snowflake ~ 文字列操作関連 ~
https://dk521123.hatenablog.com/entry/2022/10/01/000000
Snowflake ~ QUERY_HISTORY ビュー ~
https://dk521123.hatenablog.com/entry/2024/10/09/155708