【BigQuery】CURRENT_DATETIME関数を使うときはタイムゾーンに気をつけよう

クラウドプラットフォーム

BigQuery で今の日時を表したいときはCURRENT_DATETIME関数を使います。
時間に関わる関数を使うときに注意したいのがタイムゾーンですよね。

今回はCURRENT_DATETIME関数を使ってタイムゾーンを指定したときと指定しなかったとき、それぞれの処理の違いを見ていきましょう。

CURRENT_DATETIME関数

初めにタイムゾーンを指定しない場合を見ていきます。

タイムゾーンを指定しない場合

CURRENT_DATETIME関数はこのように書きます。

CURRENT_DATETIME()
クリックして拡大できます

「2023年07年24日 12時47分53秒」が返ってきました。
しかし作成日時を見ると「2023年07月24日 21時47分52秒」となっており時間が一致しません。

実はタイムゾーンを何も設定しなかった場合はUTC時間で表示されるようになっています。

UTC時間は日本時間と9時間の時差があるため注意が必要です。
CURRENT_DATETIME関数を使うときは基本的にタイムゾーンを設定しましょう。

タイムゾーンを設定する場合

カッコの中にSTRING型でタイムゾーンを入れます。
入れるタイムゾーンはこちらを参考にしてください。

【公式】タイムゾーン一覧

CURRENT_DATETIME('TIME ZONE')

今回はタイムゾーンを東京にしました。

クリックして拡大できます
SELECT
  CURRENT_DATE('Asia/Tokyo') AS `今日の日付`

作成日時と今日の日付が一致していますね。「2023年07月24日 21時55分」
タイムゾーンを付けないだけで予定していた時間より9時間ズレてしまうのは大きな誤差です。

タイムゾーンは必ず付けるようにしましょう!

まとめ

  • CURRENT_DATETIME関数を使うときは基本的にタイムゾーンを設定する
  • 設定しなかった場合はUTC時間で表示される
    • タイムゾーンを設定しないと日本だと9時間の時差が生じてしまう

CURRENT_DATETIME関数を使うときはこれらに気をつけて使いましょう!