📘

BigQueryで昨日の日付を取得するのにDATE_SUBを使う必要は無くなっていた件

2022/03/17に公開

結論

SELECT DATE_SUB(CURRENT_DATE('Asia/Tokyo'), INTERVAL 1 DAY)

ではなく

SELECT CURRENT_DATE('Asia/Tokyo')-1

で書けます。

理由

2020年10月14日のリリースで日付算術演算子が公式サポートされたためです。
BigQuery standard SQL now supports DATE arithmetics operators.
https://cloud.google.com/bigquery/docs/release-notes#October_14_2020

こんな感じでDATEとINT64の加減算ができるようになっています。月、年といったDAY単位以外の加減算に関してはまだDATE_ADD、DATE_SUBを使う必要があります。

date_expression + int64_expression
int64_expression + date_expression
date_expression - int64_expression

明日の日付の場合

SELECT CURRENT_DATE('Asia/Tokyo')+1

のように書くことができます。

BigQueryに慣れていない時に「BigQuery 日付 操作」とかで調べるとDATE_ADD、DATE_SUBを使った例がよくでてくるため、見落としがちかと思います。

頻繁にBigQueryは機能をアップデートしているため、リリースノートをまめにチェックするようにしたいですね。

Discussion