【BigQuery】日付・時刻の取得・計算まとめ

BigQueryの日付・時刻の取得やフォーマット、計算の使い方をまとめました。
内容は随時追加していきます。
目次
日付・時刻を取得/生成する
現在日付
SELECT CURRENT_DATE() -- 例)2025-04-09現在日時
SELECT CURRENT_DATETIME() -- 例)2025-07-10T02:20:17.690046数字から日付を生成する
SELECT DATE(2025, 6, 12) -- 2025-06-12文字列から日付を生成する
SELECT DATE('2025-04-01') -- 2025-04-01なお、明示的に型変換してあげなくても、日付系関数では文字列を日付型として処理してくれたりします。
○○を取得する/フォーマット
年
SELECT EXTRACT(YEAR FROM DATE('2025-05-17')) -- 2025下記でも取得できます。
この場合、文字列型になります。
SELECT FORMAT_DATE('%Y', '2025-05-17') -- 2025月
SELECT EXTRACT(MONTH FROM DATE('2025-05-17')) -- 5下記でも取得できます。
この場合、文字列型になります。
SELECT FORMAT_DATE('%m', '2025-05-17') -- 05日
SELECT EXTRACT(DAY FROM DATE('2025-05-17')) -- 17曜日
SELECT
FORMAT_TIMESTAMP('%w', '2025-08-31'), -- 0
FORMAT_TIMESTAMP('%u', '2025-08-31'), -- 7
FORMAT_TIMESTAMP('%A', '2025-08-31'), -- Sunday
FORMAT_TIMESTAMP('%a', '2025-08-31') -- Sun| フォーマット | 出力例 | 説明 |
|---|---|---|
| %w | 0~6 | 数値(0=日曜) |
| %u | 1~7 | 数値(1=月曜) |
| %A | Sunday | 曜日のフルネーム |
| %a | Sun | 曜日の略称 |
切り捨て(初日を取得)
月の初日(月未満を切り捨て)
SELECT DATE_TRUNC('2025-06-15', MONTH) -- 2025-06-01年の初日(年未満を切り捨て)
SELECT DATE_TRUNC('2025-06-15', YEAR) -- 2025-01-01TIME型の秒未満を切り捨て
SELECT TIME_TRUNC(TIME(TIMESTAMP_MICROS(1757781140469400)), SECOND) -- 16:32:20加算・減算
n日後・n日前
SELECT
DATE('2025-04-01') + 1, -- 2025-04-02
DATE('2025-04-01') - 1 -- 2025-03-31ATE_ADD関数、DATE_SUB関数を使った書き方もできます。
SELECT
DATE_ADD('2025-04-01', INTERVAL 1 DAY), -- 2025-04-02
DATE_SUB('2025-04-01', INTERVAL 1 DAY) -- 2025-03-31n年後・n年前
SELECT
DATE_ADD('2025-04-01', INTERVAL 1 YEAR), -- 2026-04-01
DATE_SUB('2025-04-01', INTERVAL 1 YEAR) -- 2024-04-01n時間後・n時間前
SELECT
DATETIME_ADD('2025-09-01 12:00:00', INTERVAL 13 HOUR), -- 2025-09-02T01:00:00
DATETIME_SUB('2025-09-01 12:00:00', INTERVAL 13 HOUR); -- 2025-08-31T23:00:00日数の間隔を計算(日数・月数計算)
日数計算
SELECT DATE_DIFF('2025-01-31', '2025-01-01', DAY) -- 30月数計算
SELECT DATE_DIFF('2025-02-01', '2025-01-01', MONTH) -- 1以上になります。
お読み頂き、ありがとうございました。


