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句を併用すれば、特定の年齢層のユーザーを抽出することも可能です。会員管理システムや顧客データベースなど、年齢情報が必要な場面でぜひ活用してください。
-
MySQLで列(カラム)の値を置き換える方法|UPDATE文の使い方を解説
MySQLでテーブルの特定の列(カラム)の値を置き換えたい場合には、UPDATE文を使用します。WHERE句で対象のレコードを指定することで、該当する行だけを安全に更新できます。この記事では、実際のSQLサンプルを使いながら、列の値を置き換える手順を順番に解説していきます。1. サンプルテーブルを作成するまず、動作確認用のテーブルを作成しましょう。以下のクエリを実行します。mysql> create table DemoTable ( StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY, Score int ); Query
-
MySQLクエリで列を分割して従業員の月給を取得する方法
MySQLで従業員の月給を取得する方法年間給与が保存されているテーブルから、給与列を12で割ることで月給を簡単に算出できます。ここでは、サンプルテーブルを作成し、実際に月給を取得するクエリの手順を解説します。1. テーブルの作成まず、従業員情報を格納するテーブルを作成しましょう。mysql> create table DemoTable1957 ( EmployeeId int, EmployeeName varchar(20), EmployeeSalary int ); Query OK, 0 rows affected (0.00 sec)2