続いては、現在の年と登録されている生年月日から、それぞれのユーザーの現在の年齢を調べてみます。
計算方法は、プレイ期間を計算した時と同じように現在の年から登録されている生年月日を引き算して求めます。
まずは、ユーザーIDと登録されている生年月日を表示してみます。
SELECT
userID AS ユーザーID,
birth AS 生年月日
FROM
users;
usersテーブルからuserIDとbirthの情報を選択して取り出しています。
このSQLを実行すると、この画像のようになります。
次に、さらに現在の日時を表示します。
SELECT
userID AS ユーザーID,
YEAR(CURRENT_DATE()) AS 現在年,
birth AS 生年月日
FROM
users;
現在の年はデータベース内には保存されていませんが、CURRENT_DATE関数で取り出すことができます。
CURRENT_DATE関数は現在の年、月、日、時間を表示するので、year関数で括って年だけを表示させています。
このSQL文を実行すると、画像のようになります。
このように、現在の年だけを表示することができました。
あとは、この現在年と生年月日を引き算すると数え年を計算することができます。
SELECT
userID AS ユーザーID,
YEAR(CURRENT_DATE()) AS 現在年,
birth AS 生年月日,
YEAR(CURRENT_DATE()) - YEAR(birth) AS 数え年
FROM
users;
YEAR(CURRENT_DATE()) (現在年)からYEAR(birth)(登録されている生年月日の年)を引いています。
このSQL文を実行すると、画像のようになります。
このように、関数を組み合わせて四則演算を利用することでユーザーの年齢を計算することができます。
なお、上のSQLだと誕生日を考慮せずに年齢を計算しているので、満年齢を求める事ができません。
誕生日を考慮して満年齢を計算するためには、TIMESTAMPDIFF関数を使います。
SELECT
userID AS ユーザーID,
YEAR(CURRENT_DATE()) AS 現在年,
birth AS 生年月日,
YEAR(CURRENT_DATE()) - YEAR(birth) AS 数え年,
TIMESTAMPDIFF(YEAR, birth, CURRENT_DATE()) AS 満年齢
FROM
users;
ここで使われているTIMESTAMPDIFF関数では、birthとCURRENT_DATE()の間の差を整数で取得しているので、満年齢を計算することができます。
このSQLを実行すると、画像のようになります。
ユーザー11は、11月10日現在でまだ誕生日を迎えていないため、数え年は50ですが満年齢は49となっています。