MySQLで生年月日から年齢を計算する方法
MySQLでは、DATE_FORMAT()関数を使うことで、生年月日から現在の年齢を簡単に計算できます。まずnow()関数で現在の日時を取得し、その差分をもとに年齢を求めます。
基本構文
年齢を計算するための基本的な構文は以下の通りです。
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), 'yourDateofbirth')), '%Y') + 0 AS anyVariableName;
この構文では、yourDateofbirthの部分を実際の生年月日に置き換えて使用します。DATEDIFF()で現在日時と生年月日の差(日数)を求め、FROM_DAYS()で日付形式に変換し、さらにDATE_FORMAT()で「%Y」を指定することで経過年数を取り出しています。最後に+0を加えることで、文字列として返される値を数値に変換しています。
具体的なクエリ例
例えば、2010年11月25日生まれの方の年齢を計算する場合は、次のようなクエリになります。
SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), '2010-11-25')), '%Y') + 0 AS Age;
実行結果は以下の通りです。
+------+ | Age | +------+ | 8 | +------+ 1 row in set (0.00 sec)
テーブルを使った実践例
次に、実際のテーブルに保存された生年月日データを使って年齢を計算してみましょう。まず、テーブルを作成します。
mysql> create table AgeCalculationFromDatetime
-> (
-> YourDateofBirth datetime
-> );
Query OK, 0 rows affected (0.52 sec)
データの挿入
作成したテーブルに生年月日を挿入します。
mysql> insert into AgeCalculationFromDatetime values('1995-11-25');
Query OK, 1 row affected (0.13 sec)
登録データの確認
SELECT文ですべてのレコードを表示して確認しましょう。
mysql> select * from AgeCalculationFromDatetime;
実行結果は以下の通りです。
+---------------------+ | YourDateofBirth | +---------------------+ | 1995-11-25 00:00:00 | +---------------------+ 1 row in set (0.00 sec)
年齢を計算するクエリ
テーブル内の生年月日カラムを参照して年齢を計算するには、以下のようにクエリを記述します。
mysql> SELECT DATE_FORMAT(FROM_DAYS(DATEDIFF(now(), YourDateofBirth)), '%Y') + 0 AS Age
-> from AgeCalculationFromDatetime;
実行結果は以下の通りです。
+------+ | Age | +------+ | 23 | +------+ 1 row in set (0.00 sec)
このように、DATEDIFF()・FROM_DAYS()・DATE_FORMAT()の3つの関数を組み合わせることで、datetime型やdate型で保存された生年月日から、常に最新の状態に保たれた正確な年齢を取得できます。ユーザー情報の管理などで年齢を動的に表示したい場合に非常に便利なテクニックなので、ぜひ活用してみてください。
-
MySQLで生年月日から曜日名を表示する方法【DAYNAME()関数の使い方】
MySQLで生年月日から曜日名を表示する方法MySQLでは、DAYNAME()関数を使用することで、生年月日などのDATE型カラムから曜日名を簡単に取得・表示できます。DAYNAME()関数は、指定された日付に対応する曜日名(Sunday、Monday、Tuesdayなど)を英語の文字列として返します。ここでは、実際にテーブルを作成し、生年月日のデータから曜日名を表示する手順を順番に見ていきましょう。1. テーブルを作成するまず、生年月日を格納するためのテーブルを作成します。mysql> create table DemoTable795 ( DateOfBirth date);Qu
-
MySQLで秒数をもとに時間を計算する方法をわかりやすく解説
MySQLでは、TIME_TO_SEC()関数とSEC_TO_TIME()関数を組み合わせることで、時間データを秒単位に変換して集計し、その結果を再び時刻形式で取得できます。特に、複数の時刻の合計など、24時間を超える可能性がある計算を行う場合に非常に便利です。ここでは、実際にテーブルを作成しながら手順を確認していきましょう。 1. サンプルテーブルの作成 まず、TIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable ( Logouttime time ); Query OK, 0 r