[SQL]年齢による条件抽出

データベースレコードには「生年月日」のカラムがありますが、「年齢」のカラムはありません。そのような場合に年齢による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



アプリ関連ニュース

お問い合わせはこちら

お問い合わせ・ご相談はお電話、またはお問い合わせフォームよりお受け付けいたしております。

tel. 06-6454-8833(平日 10:00~17:00)

お問い合わせフォーム