BigQueryの日付関数でタイムゾーン指定はサマータイムが反映される
日本では馴染みがないサマータイム。 例として、タイムゾーンと日時を指定してBigQueryのデータを可視化するアプリケーションがあったとします。 その場合、バックエンドで実行されるクエリには、DATETIMEやTIMESTAMPなどの関数が含まれ、タイムゾーンを指定して使用すると思います。 DATETIMEやTIMESTAMPなどの関数に、タイムゾーンを指定すると各タイムゾーンのサマータイム期間中はサマータイムが反映される状態になります。 例として、ロンドンのサマータイムで説明します。2021年のロンドンのサマータイムは下記の期間になります。
2021-03-28 00:00 〜 2021-10-31 01:00
期間外と期間内の日付で試してみます。
SELECT DATETIME("2021-03-27 00:00:00", "Europe/London") 2021-03-27T00:00:00 ← 期間外なのでそのまま SELECT DATETIME("2021-03-28 01:00:00", "Europe/London") 2021-03-28T02:00:00 ← 期間内なので1時間進んでいる
サマータイムを適用しないクエリの書き方
サマータイムの反映が不要な場合は、日付関数でタイムゾーンの指定ではなく、時差を指定する事でサマータイムが反映されません
SELECT DATETIME_ADD("2021-03-28 01:00:00", INTERVAL 0 HOUR) 2021-03-28T01:00:00 ← 期間内だがサマータイムは反映されていない
コメント
コメントを投稿