[SQL] 誕生日から現在の年齢を算出

ユーザーの年齢を取得したいという場合に、データベース場では年齢ではなく誕生日を持っておいて、取得時に計算する、というのが一般的だと思います。

表示で使う際は、プログラム側で関数を作っておいて計算すればいいですが、分析用途やリストの出力のためにSQLでさくっと年齢を出したい!という場合に使えるのが以下の方法。

 

誕生日を数値化して、10000を引いて、余りを切り捨てる

 

日付を「2012-01-01」→「20120101」みたいな形で数値化して、10000を引くと、年の単位で引き算したことになります。
小数点が1年に満たない分なので、切り捨てれば現在の年齢になります。

 

MySQLの場合のクエリーはこんな感じになると思います。

(usersテーブル、誕生日の日付がbirthday_dateに入ってると仮定)

SELECT
    birthday_date AS '誕生日',
    TRUNCATE((CAST(CURDATE() AS SIGNED) - CAST(birthday_date AS SIGNED)) / 10000, 0) as '年齢'
FROM
    users
;