[SQL]年齢による条件抽出
- 2020年6月19日
- 技術情報
データベースレコードには「生年月日」のカラムがありますが、「年齢」のカラムはありません。そのような場合に年齢によるSQLの条件抽出をおこなうためにはどのようにSQLを組み立てていけばいいのでしょうか。
レコードの確認
まずは、メンバー(member)テーブルのレコードで、どのような生年月日のレコードが存在しているかを確認します。
select
birthday
from
member;
実行結果:

以上のような生年月日のレコードが登録されていることが確認できました。
生年月日から年齢への変換
生年月日のレコードをもとにして年齢へ変換をおこないます。
年齢へ変換したレコードは「age」カラムに表示されるように設定しています。
以下のSQLを実行します。
select
birthday
, timestampdiff(year, birthday, curdate()) as age
from
member;
実行結果

現在日時と生年月日から年齢が抽出できていることが確認できました。
年齢の範囲による条件設定
where句で年齢の範囲による条件設定をおこなうためにはサブクエリ化する必要があります。
以下のように抽出する年齢の範囲を「10歳以上、50歳以下」に設定をおこないました。
select
*
from
(
select
birthday
, timestampdiff(year, birthday, curdate()) as age
from
member
) tbl
where
age >= 10
and age <= 50;
実行結果:

指定した年齢の範囲のレコードが抽出できていることが確認できました。
金曜日担当: nishida
nishida at 2020年06月19日 10:00:45