MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

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歳差し引いて計算されるため、正確な満年齢を求めるのに適しています。

  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」に生年月

  2. MySQLでテーブルの最後の10件のレコードを取得する方法

    MySQLでテーブルの末尾にある10行(最新の10件)を取得したい場合は、SELECT文とLIMIT句を組み合わせたサブクエリを利用します。この記事では、実際にテーブルを作成し、データを挿入しながら、最後の10件を取得するクエリの手順を具体的に解説します。 1. サンプルテーブルの作成 まず、動作確認用のテーブルを作成します。 mysql> create table Last10RecordsDemo -> ( -> id int, -> name varchar(100) -> ); Query OK, 0 rows affected