【BigQuery】日時データの端数を丸めるDATETIME_TRUNC関数の使い方について

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

日時データの端数を切り詰めたいときはDATETIME_TRUNC関数を使いましょう。TRUNCの元となる英語はTRUNCATE。意味は「切り詰める」です。

今回は日時データの端数を切るDATETIME_TRUNC関数について紹介します。

テストデータ

2023年8月3日12時59分59秒のデータを用意しました。
これをDATETIME_TRUNC関数を使って指定した粒度で日時データを切り詰めましょう。

クリックして拡大できます

使い方

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

DATETIME_TRUNC(日時データ, 切り詰める日時部分)

に切り詰められる日時部分はいくつかありますが、主に使うのはこちらでしょう。

  • SECOND
  • MINUTE
  • HOUR
  • DAY
  • WEEK
  • MONTH
  • YEAR

他に使用できる日時部分に関しては公式リファレンスをご確認ください。

Datetime functions  |  BigQuery  |  Google Cloud

DATETIME_TRUNC関数を使ってみよう

2023年8月3日12時59分59秒をそれぞれ指定した日時粒度で切り詰めました。

クリックして拡大できます
SELECT
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), SECOND) AS second,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), MINUTE) AS minute,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), HOUR) AS hour,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), DAY) AS day,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), WEEK) AS week,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), MONTH) AS month,
  DATETIME_TRUNC(DATETIME('2023-08-03 12:59:59'), YEAR) AS year

SECOND は変化がありませんが、それ以外は数値が変わりましたね。
例えば HOURであれば、2023年8月3日 12時00分00秒と分と秒の59が0に置き換わりました。

このように指定した日時粒度(年や月、日など)よりも後の値を丸める役割があります。

まとめ

日時データを指定した粒度で端数を削れるDATETIME_TRUNC関数を紹介しました。
切りの良い値を取得したいときに便利ですね!

業務でもたまに目にする関数なのでこれを機会に使い方をマスターしましょう!