AGE
age() 関数は、2 つのタイムスタンプ間の差、またはタイムスタンプと現在の日時との差を計算します。
構文
AGE(<end_timestamp>, <start_timestamp>)
戻り値の型
INTERVAL 型を返します。
計算ロジック
この関数は、次の内容を計算します。
- 完全な年の差分(うるう年を考慮)
- 残りの月の差分(月ごとの日数の違いを考慮)
- 残りの日の差分(時刻コンポーネントを含む)
<end_timestamp> が <start_timestamp> より前の場合は、負の間隔が返されます。
例
基本的な age の計算
SELECT AGE('2023-03-15'::TIMESTAMP, '2020-01-20'::TIMESTAMP);
├─────────────────────────┤
│ 3 years 1 month 26 days │
╰─────────────────────────╯
逆順の時系列
SELECT AGE('2018-12-25'::TIMESTAMP, '2022-05-10'::TIMESTAMP);
├─────────────────────────────┤
│ -3 years -4 months -16 days │
╰─────────────────────────────╯
時刻コンポーネントを含む場合
SELECT AGE('2023-02-28 14:00:00'::TIMESTAMP, '2023-02-27 08:30:00'::TIMESTAMP);
├───────────────┤
│ 1 day 5:30:00 │
╰───────────────╯
テーブルデータの処理
CREATE TABLE projects (
name String,
start_date TIMESTAMP,
end_date TIMESTAMP
);
INSERT INTO projects VALUES
('Alpha', '2020-06-01', '2023-09-30'),
('Beta', '2022-01-15', '2022-11-01');
SELECT
name,
AGE(end_date, start_date) AS duration
FROM projects;
╭─────────────────────────────────────────────╮
│ name │ duration │
│ Nullable(String) │ Nullable(Interval) │
├──────────────────┼──────────────────────────┤
│ Alpha │ 3 years 3 months 29 days │
│ Beta │ 9 months 17 days │
╰─────────────────────────────────────────────╯
関連情報
- DATE_DIFF: 特定の時間単位の差分を計算するための代替関数