BigQuery で今日の日付や現在の日時を取得するには、CURRENT_DATE
関数とCURRENT_DATETIME
関数を使用します。
- 今日の日付を取得する:
CURRENT_DATE
- 現在の日時を取得する:
CURRENT_DATETIME
この記事では、2つの関数の基本的な使い方や実務向けの応用例までをサンプルを添えて紹介しているので、よければ最後までご一読ください。
目次
CURRENT_DATE
基本
BigQuery で今日の日付を取得するには、CURRENT_DATE
関数を使用します。
CURRENT_DATE([TIME_ZONE])
デフォルトのタイムゾーンは UTC なので、日本などにあわせたい場合は以下のようにタイムゾーン名を指定します。
SELECT CURRENT_DATE("Asia/Tokyo") AS d;
# | | d |
# |---|------------|
# | 1 | 2022-02-07 |
他のタイムゾーン名の一覧はこちらのページ(Wikipedia)から確認してください。
応用
他の日付関数と組み合わせると、昨日や月末日のような日付を取得することができます。
SELECT
CURRENT_DATE("Asia/Tokyo") AS today, -- 今日
DATE_SUB(CURRENT_DATE("Asia/Tokyo"), INTERVAL 1 DAY) AS yesterday, -- 昨日
DATE_ADD(CURRENT_DATE("Asia/Tokyo"), INTERVAL 1 MONTH) AS one_month_later, -- 1か月後
DATE_TRUNC(CURRENT_DATE("Asia/Tokyo"), MONTH) AS bom, -- 月初日
LAST_DAY(CURRENT_DATE("Asia/Tokyo"), MONTH) AS eom, -- 月末日
;
# | | today | yesterday | one_month_later | bom | eom |
# |---|------------|------------|-----------------|------------|------------|
# | 1 | 2022-02-07 | 2022-02-06 | 2022-03-07 | 2022-02-01 | 2022-02-28 |
また、スクリプトを使用して日付を変数としてセットすると、コードの中で使いまわしができて便利です。
DECLARE d DATE DEFAULT CURRENT_DATE("Asia/Tokyo");
SELECT
d AS today, -- 今日
DATE_SUB(d, INTERVAL 1 DAY) AS yesterday, -- 昨日
DATE_ADD(d, INTERVAL 1 MONTH) AS one_month_later, -- 1か月後
DATE_TRUNC(d, MONTH) AS bom, -- 月初日
LAST_DAY(d, MONTH) AS eom, -- 月末日
;
# | | today | yesterday | one_month_later | bom | eom |
# |---|------------|------------|-----------------|------------|------------|
# | 1 | 2022-02-07 | 2022-02-06 | 2022-03-07 | 2022-02-01 | 2022-02-28 |
CURRENT_DATETIME
基本
BigQuery で現在の日時(今日の日付に現在時刻が付与されているもの)を取得するには、CURRENT_DATETIME
関数を使用します。
CURRENT_DATETIME([TIME_ZONE])
CURRENT_DATE
関数と同様に、デフォルトのタイムゾーンは UTC なので、日本などにあわせたい場合は以下のようにタイムゾーン名を指定します。
SELECT CURRENT_DATETIME("Asia/Tokyo") AS dt;
# | | dt |
# |---|----------------------------|
# | 1 | 2022-02-07T13:07:37.750422 |
応用
CURRENT_DATETIME
関数の応用例はCURRENT_DATE
関数と大差ないので、割愛します。
コメント