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

MySQLクエリでBirthDate列から年齢を取得する方法【DATEDIFF関数の使い方】

MySQLで生年月日から年齢を計算するには?

MySQLのクエリでBirthDate(生年月日)列を使って年齢を取得したい場合は、DATEDIFF() 関数を利用するのが便利です。DATEDIFF()は2つの日付の差を日数で返すため、それを365.25で割ることで、うるう年も考慮した正確な年齢を算出できます。

ここでは、実際にテーブルを作成し、データを挿入して年齢を計算する一連の手順を解説します。

1. テーブルの作成

まず、以下のクエリでサンプル用のテーブルを作成します。

mysql> create table DemoTable
(
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    DateOfBirth date
);
Query OK, 0 rows affected (1.46 sec)

このテーブルには、自動採番される「Id」と、日付型の「DateOfBirth」列が定義されています。

2. レコードの挿入

次に、INSERT文を使っていくつかの生年月日データを登録します。

mysql> insert into DemoTable(DateOfBirth) values('2010-01-21');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(DateOfBirth) values('1993-04-02');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(DateOfBirth) values('1999-12-01');
Query OK, 1 row affected (1.53 sec)
mysql> insert into DemoTable(DateOfBirth) values('1998-11-16');
Query OK, 1 row affected (0.19 sec)
mysql> insert into DemoTable(DateOfBirth) values('2004-03-19');
Query OK, 1 row affected (0.11 sec)

3. 登録データの確認

SELECT文で登録されたレコードを表示してみましょう。

mysql> select *from DemoTable;

実行結果は以下の通りです。

+----+-------------+
| Id | DateOfBirth |
+----+-------------+
|  1 | 2010-01-21  |
|  2 | 1993-04-02  |
|  3 | 1999-12-01  |
|  4 | 1998-11-16  |
|  5 | 2004-03-19  |
+----+-------------+
5 rows in set (0.00 sec)

4. DATEDIFF()関数で年齢を計算する

いよいよ本題です。DATEDIFF()関数とCURDATE()(現在の日付)を組み合わせることで、生年月日から年齢を求めることができます。

mysql> select cast(DATEDIFF(curdate(),DateOfBirth) / 365.25 AS UNSIGNED) AS AGE from DemoTable;

ポイントは以下の2点です。

CURDATE():現在の日付を返す関数です。
365.25で割る:4年に一度のうるう年を考慮することで、より正確な年齢を計算できます。
CAST(... AS UNSIGNED):小数点以下を切り捨てて整数値として表示します。

実行結果は以下のようになります。

+------+
| AGE  |
+------+
|    9 |
|   26 |
|   19 |
|   20 |
|   15 |
+------+
5 rows in set (0.00 sec)

5. 年齢を条件にレコードを絞り込む

さらに応用として、「年齢が20歳から26歳の間」であるレコードだけを抽出してみましょう。YEAR()関数を使って現在の年から生まれ年の差分を計算し、BETWEEN句で範囲指定します。

mysql> SELECT *FROM DemoTable WHERE YEAR(CURDATE())-YEAR(DateOfBirth)
BETWEEN 20 AND 26;

実行結果:

+----+-------------+
| Id | DateOfBirth |
+----+-------------+
|  2 | 1993-04-02  |
|  3 | 1999-12-01  |
|  4 | 1998-11-16  |
+----+-------------+
3 rows in set (0.00 sec)

まとめ

MySQLでは、DATEDIFF()関数とCURDATE()を組み合わせることで、生年月日列から簡単に年齢を計算できます。365.25で割ることでうるう年にも対応でき、CAST関数で整数化すれば見やすい結果になります。また、YEAR()関数とBETWEEN句を併用すれば、特定の年齢層のユーザーを抽出することも可能です。会員管理システムや顧客データベースなど、年齢情報が必要な場面でぜひ活用してください。

  1. MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説

    MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query

  2. MySQLクエリで列を分割して従業員の月給を取得する方法

    MySQLで従業員の月給を取得する方法年間給与が保存されているテーブルから、給与列を12で割ることで月給を簡単に算出できます。ここでは、サンプルテーブルを作成し、実際に月給を取得するクエリの手順を解説します。1. テーブルの作成まず、従業員情報を格納するテーブルを作成しましょう。mysql> create table DemoTable1957 ( EmployeeId int, EmployeeName varchar(20), EmployeeSalary int ); Query OK, 0 rows affected (0.00 sec)2