SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 社員募集 ...

【MySQL】SQLで誕生日を計算する

誕生日が日付Aの人が、日付Bのとき何歳か計算する。

月数を算出する日付関数があれば、「切り捨て(AからBの月数/12)」の計算式で算出できる。

MySQLには月数を算出する日付関数はないようなので、これでどうでしょう。

select year(B) - year(A) - (date_format(B, '%m%d') < date_format(A, '%m%d')) as age

いつも頭の中でやっていることと同じ。年を引き算して、誕生日が来ていたらそのまま。誕生日がまだだったら1歳引く。

true(真)が1、false(偽)が0になるのを利用して、端折って書いてます。

例えば

1990年2月20日生まれの人が今何歳か?

set @A = current_date();
set @B = '1990-02-20';
select year(@A) - year(@B) - (date_format(@A, '%m%d') < date_format(@B, '%m%d')) as age;

ある学校の生徒が2010年9月1日時点で何歳か?

select year('2010-09-01') - year(birthday) - (date_format('2010-09-01', '%m%d') < date_format(birthday, '%m%d')) as age from student;

関連するメモ

コメント