1. ホーム
  2. mysql

MySQLで年齢を計算する (InnoDb)

2023-07-18 13:59:30

質問

もし、ある人の生年月日を dd-mm-yyyy という形式でテーブルに保存されている場合、現在の日付からそれを引くと、どのような形式で日付が返されるでしょうか?

この返された書式を使って、誰かの年齢を計算するにはどうしたらよいでしょうか。

どのように解決するのですか?

値がDATETIMEデータ型として格納されている場合。

SELECT YEAR(CURRENT_TIMESTAMP) - YEAR(dob) - (RIGHT(CURRENT_TIMESTAMP, 5) < RIGHT(dob, 5)) as age 
  FROM YOUR_TABLE

うるう年を考慮すると正確さに欠ける。

SELECT DATEDIFF(CURRENT_DATE, STR_TO_DATE(t.birthday, '%d-%m-%Y'))/365 AS ageInYears
  FROM YOUR_TABLE t