【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-01
TIME型の秒未満を切り捨て
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-31
ATE_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-31
n年後・n年前
SELECT
DATE_ADD('2025-04-01', INTERVAL 1 YEAR), -- 2026-04-01
DATE_SUB('2025-04-01', INTERVAL 1 YEAR) -- 2024-04-01
n時間後・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
以上になります。
お読み頂き、ありがとうございました。