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

MySQLで生年月日(DOB)から年齢を取得する方法

MySQLで生年月日(DOB:Date of Birth)から年齢を求めるには、TIMESTAMPDIFF()関数を使用します。第1引数に「YEAR」を指定すると、2つの日付の差が「年」単位で返されるため、誕生日から見た満年齢をそのまま計算できます。

基本構文

SELECT TIMESTAMPDIFF(YEAR, 日付カラム名, CURRENT_DATE) AS 任意の別名
FROM テーブル名;

実際に試してみよう

1. テーブルを作成する

まずは生年月日を格納するテーブルを作成します。

mysql> CREATE TABLE DemoTable
    -> (
    ->   Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->   DateOfBirth DATETIME
    -> );
Query OK, 0 rows affected (0.73 sec)

2. サンプルデータを挿入する

INSERT文を使って、テーブルにレコードを追加します。

mysql> INSERT INTO DemoTable(DateOfBirth) VALUES('1998-06-04 12:30:00');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT INTO DemoTable(DateOfBirth) VALUES('2000-01-31 04:10:20');
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO DemoTable(DateOfBirth) VALUES('2010-12-01 03:50:45');
Query OK, 1 row affected (0.24 sec)

3. 登録データを確認する

SELECT文で全レコードを表示してみましょう。

mysql> SELECT * FROM DemoTable;

出力結果

+----+---------------------+
| Id | DateOfBirth         |
+----+---------------------+
| 1  | 1998-06-04 12:30:00 |
| 2  | 2000-01-31 04:10:20 |
| 3  | 2010-12-01 03:50:45 |
+----+---------------------+
3 rows in set (0.00 sec)

生年月日から年齢を取得するクエリ

以下のクエリを実行すると、各レコードの生年月日から年齢を取得できます。

mysql> SELECT TIMESTAMPDIFF(YEAR, DateOfBirth, CURRENT_DATE) AS YourAge FROM DemoTable;

出力結果

+---------+
| YourAge |
+---------+
| 21      |
| 19      |
| 8       |
+---------+
3 rows in set (0.00 sec)

押さえておきたいポイント

  • 満年齢ベースの計算: TIMESTAMPDIFF(YEAR, ...) は誕生日がまだ来ていない場合に切り捨てられるため、日本の制度で使われる「満年齢」と同じ結果になります。
  • 実行日によって結果が変わる: CURRENT_DATE はクエリ実行時点の日付を返すため、同じデータでも実行日により年齢は変化します。
  • 他の単位にも応用可能: 「YEAR」を「MONTH」や「DAY」に変更すれば、月齢や経過日数なども同様に算出でき、年齢区分ごとの集計などにも活用できます。
  1. MySQLでテーブルの最後の10件のレコードを取得する方法

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

  2. MySQL Workbenchを使ってサーバー上のデータベースからERモデルを取得する方法

    サーバー上のデータベースからERモデル(ER図)を取得するには、まずMySQL Workbenchを起動します。起動直後の画面は以下のとおりです。1. リバースエンジニアリングの開始次に、メニューバーから「Database」メニューを選択し、「Reverse Engineer」をクリックします。Database -> Reverse Engineer2. データベースへの接続すると、下のスクリーンショットのようなウィザードが表示されます。ここでデータベースのパスワードを入力し、「OK」ボタンを2回押してください。3. ウィザードの進行「OK」ボタンを押すと、次のウィザード画面に移行します