以下のように、顧客ごとの生年月日が登録されたテーブルがあるとする。

今回はこのようなテーブルから、生年月日を用いて現在の年齢を算出する方法を紹介する。

まずは完成形のクエリを見ていこう。

1
2
3
4
5
6
7
SELECT
    customer_name
    , customer_birthday
    , (current_date - customer_birthday) / 365 as age
FROM
    access_log_wide
;

このクエリを実行すると以下の結果が得られる。

ポイントはコード4行目。
まず、current_date式を使って現在の日付と生年月日の差を算出する。
これにより生年月日から現在までの日数が分かるので、後は年齢を割り出すために日数を365日で割ることで、現在の年齢が分かる。

厳密には閏年の関係で正確な計算式ではないが、この程度の誤差であれば分析上そう困ることはないだろう。