MySQLで生年月日(DOB)から年齢を照会・抽出する方法
MySQLでは、CURDATE()関数とINTERVAL句を組み合わせることで、生年月日(DOB)をもとに特定の年齢以上のユーザーを簡単に抽出できます。ここでは、16歳以上のレコードを取得する例を紹介します。
1. サンプルテーブルの作成
まず、生年月日(DOB)を格納するテーブルを作成します。
mysql> create table DemoTable611 (DOB date); Query OK, 0 rows affected (0.99 sec)
2. レコードの挿入
INSERT文を使って、いくつかの生年月日データを登録します。
mysql> insert into DemoTable611 values('1996-04-21');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable611 values('2001-01-31');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable611 values('2004-12-21');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable611 values('2000-02-03');
Query OK, 1 row affected (0.14 sec)3. 登録したレコードの確認
SELECT文でテーブル内の全レコードを表示してみましょう。
mysql> select *from DemoTable611;
実行結果は以下のとおりです。
+------------+ | DOB | +------------+ | 1996-04-21 | | 2001-01-31 | | 2004-12-21 | | 2000-02-03 | +------------+ 4 rows in set (0.00 sec)
4. 生年月日から年齢を条件に照会する
現在の日付(CURDATE())から16年前の日付を計算し、その日付以降に生まれたレコード(つまり16歳未満の誕生日を持つ直前の人を除く、16歳以上相当の判定)を抽出します。具体的には、DOBが「今日から16年前」より後の日付であれば、まだ16歳の誕生日を迎えていないことを意味します。
mysql> select *from DemoTable611 where DOB >= (CURDATE() - INTERVAL 16 YEAR);
実行結果は以下のとおりです。
+------------+ | DOB | +------------+ | 2004-12-21 | +------------+ 1 row in set (0.00 sec)
補足:正確な年齢を計算したい場合
上記のクエリは「指定年齢以上かどうか」の判定に使えますが、実際の年齢そのものを数値として取得したい場合は、TIMESTAMPDIFF()関数が便利です。
mysql> select DOB, TIMESTAMPDIFF(YEAR, DOB, CURDATE()) AS age from DemoTable611;
これにより、各レコードの生年月日と現在の満年齢を一覧表示できます。TIMESTAMPDIFF(YEAR, DOB, CURDATE())は、誕生日がまだ来ていない年については自動的に1歳差し引いて計算されるため、正確な満年齢を求めるのに適しています。
-
MySQLで生年月日から年齢を計算する方法をわかりやすく解説
MySQLで生年月日から年齢(歳)を計算する方法 MySQLでは、登録された生年月日をもとに、現在の年齢をSQLだけで簡単に計算できます。ここでは、ユーザー変数と日付関数を組み合わせた基本的な方法を、手順を追って紹介します。 手順1:生年月日をユーザー変数に格納する まず、SET文を使って生年月日の値をユーザー変数「@dob」に代入します。以下の例では、「1984-01-17」という日付を変数に設定しています。 mysql> SET @dob = 1984-01-17; Query OK, 0 rows affected (0.00 sec) このクエリにより、変数「@dob」に生年月
-
MySQLでテーブルの最後の10件のレコードを取得する方法
MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected