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関数を使うときはこれらに気をつけて使いましょう!