【SQL】BigQueryにおけるDATE_ADD関数とは?使い方をわかりやすく解説!

今回はBigQuery におけるDATE_ADD関数の使い方を紹介する。

以前紹介したDATE_TRUNC関数と合わせて使い方を覚えれば日付データの扱いの幅が大きく広がるので、是非参考にして欲しい。

DATE_ADD関数とは?

DATE_ADD関数は対象の日付データ(DATE型)に指定した時間間隔を追加することが出来る関数だ。

「WHERE句で納品予定日が今日から1週間後までのデータに絞り込みたい。」

という場合などに活躍する。

例えば、下記データ(order_dateはDATE型)をDATE_ADD関数を使用し、1ヶ月後の日付を取得する場合のクエリとその結果は下記の通りだ。

index

order_date

1
2022-05-15
2
2022-05-20
3
2022-06-10
4
2022-06-25
5
2023-01-10
6
2023-01-20
7
2023-02-05
8
2023-02-20
9
2023-03-10

BQ_DATEADD①

DATE_ADDによりorder_dateの1ヶ月後の値が取得出来ていることがお分かりいただけると思う。

実務においては、単純に1ヶ月後というよりは

「翌月の1日の値を取得したい」

という時もあるだろう。

その場合は下記クエリのようにDATE_TRUNC関数と組み合わせれば実現可能だ。

BQ_DATEADD②

oder_dateの翌月1日の値を取得出来ている(next_month_start)ことがお分かりいただけると思う。

このようにDATE_ADD関数は対象の日付データに特定の時間間隔を追加したい時に非常に便利な関数だ。

スポンサーリンク

DATE_ADD関数の使い方

DATE_ADD関数は下記を指定して使用する。

  • 対象カラム:値を操作したいDATE型カラムを指定
    ※実際にはDATETIME型やTIMESTAMP型も指定できるが、それぞれ専用の関数が用意されているのでそちらを利用した方がよいだろう
  • 加算する期間数と単位:1ヶ月追加したいなら、1MONTHを指定

BQ_DATEADD③

具体例に当てはめて確認してみよう。

index

order_date

1
2022-05-15
2
2022-05-20
3
2022-06-10
4
2022-06-25
5
2023-01-10
6
2023-01-20
7
2023-02-05
8
2023-02-20
9
2023-03-10

DATE_ADD関数を使用して、上記データのorder_date(DATE型)の値から1年後の値を取得したnext_yearカラムを取得するクエリとその具体的な指定の詳細は下記の通りだ。

BQ_DATEADD④

上記クエリの結果は下記となり、next_yearカラムではorder_dateの各値に1年加えた値が表示されているのがお分かりいただけると思う。

BQ_DATEADD⑤

DATE_ADD関数は対象のデータに期間を加算する関数と先ほど説明したが、実際は期間の指定にマイナスを設定すれば減算することも可能だ。
※本来、時間の減算を行う用にDATE_SUB関数が用意されている

例えば、「今日の日付(24年4月15日)から1年前の値を取得したい」という場合は下記のように指定すればOKだ。

BQ_DATEADD⑥

このクエリの結果は下記の通りだ。

BQ_DATEADD⑦

マイナスの期間を指定することで1年前の値が取得出来ていることがお分かりいただけると思う。

これを利用すれば、「WHERE句で今日から1年前までのorder_dateの値に絞り込む」というような使い方も可能だ。

指定できる日付の単位

DATE_ADD関数で指定できる日付の単位は下記の通りだ。

日付の単位説明

YEAR

年単位
QUARTER四半期(3ヶ月)単位
MONTH月単位
WEEK週(7日)単位
DAY日単位

DATE_ADD関数は日時を表す下記データ型の内、DATE型カラム向けに作られている。

  • DATE型
  • DATETIME型
  • TIMESTAMP型
  • TIME型

そのため、DAYより細かい時間関係(HOURやSECOND等)の指定は出来ない。

スポンサーリンク

まとめ

BigQueryにおけるDATE_ADD関数の要点は下記の通りだ。

  • DATE_ADD関数は対象の日付データに指定した時間間隔を加算することが出来る関数
  • CURRENT_DATEと組み合わせてWHERE句での絞り込みに活用されたり、DATE_TRUNC関数と組み合わせて利用することが多い
  • 実際は期間にマイナスを指定することで指定した時間間隔を減算することも可能

他のBigQueryに関する記事は下記にまとめているので是非参考にして欲しい。

BigQuery関数一覧

おすすめの記事