MENU

BigQuery で今日の日付・現在の日時を取得する

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関数と大差ないので、割愛します。

この記事が気に入ったら
フォローしてね!

シェアしていただけると励みになります
  • URLをコピーしました!

コメント

コメントする

目次
閉じる