MySQLでyyyy-mm-dd形式の日付(dob)から特定の年だけを抽出して比較する方法
yyyy-mm-dd形式で保存された日付カラム(例:生年月日のdob)から、特定の年だけを条件にデータを検索したい場合は、MySQLの組み込み関数である YEAR() を使用します。
基本的な構文は以下の通りです。
SELECT * FROM テーブル名 WHERE YEAR(カラム名) = '年の値';
テーブルの作成
まず、動作を確認するためのサンプルテーブルを作成しましょう。ここでは、DATE型のDOB(生年月日)カラムを持つテーブルを定義します。
mysql> CREATE TABLE DemoTable1322 -> ( -> DOB date -> ); Query OK, 0 rows affected (0.55 sec)
データの挿入
次に、INSERTコマンドを使っていくつかのレコードを登録します。
mysql> INSERT INTO DemoTable1322 VALUES('1999-04-12');
Query OK, 1 row affected (0.68 sec)
mysql> INSERT INTO DemoTable1322 VALUES('2010-12-01');
Query OK, 1 row affected (0.15 sec)
mysql> INSERT INTO DemoTable1322 VALUES('2015-03-09');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable1322 VALUES('2007-05-24');
Query OK, 1 row affected (0.08 sec)登録データの確認
SELECT文ですべてのレコードを表示して、正しく登録されているか確認します。
mysql> SELECT * FROM DemoTable1322;
実行結果
+------------+ | DOB | +------------+ | 1999-04-12 | | 2010-12-01 | | 2015-03-09 | | 2007-05-24 | +------------+ 4 rows in set (0.00 sec)
特定の年で絞り込むクエリ
ここからが本題です。yyyy-mm-dd形式のdobデータから、特定の年(この例では「2015年」)に該当するレコードのみを取得するには、YEAR()関数を使って以下のように記述します。
mysql> SELECT * FROM DemoTable1322 WHERE YEAR(DOB) = '2015';
実行結果
+------------+ | DOB | +------------+ | 2015-03-09 | +------------+ 1 row in set (0.01 sec)
補足:パフォーマンスに関する注意点
WHERE句内でYEAR()のような関数をカラムに適用すると、インデックスが設定されていてもフルスキャンが発生し、大量データではパフォーマンスが低下する場合があります。そのようなケースでは、以下のように範囲指定(BETWEEN)を使う方法も有効です。
mysql> SELECT * FROM DemoTable1322
-> WHERE DOB >= '2015-01-01' AND DOB < '2016-01-01';どちらの方法でも同じ結果が得られますので、データ量やインデックスの設計に応じて使い分けることをおすすめします。
-
MySQLですべての列とともに「mm-yyyy」形式で月と年を抽出する方法
MySQLで「mm-yyyy」形式の月と年を抽出する方法特定の形式で月と年を抽出したい場合は、DATE_FORMAT()関数とSTR_TO_DATE()関数を組み合わせて使用します。文字列として保存された日付データを一度日付型に変換し、その後目的の形式に整形するという流れになります。まず、サンプル用のテーブルを作成しましょう。mysql> create table DemoTable1931 ( ShippingDate varchar(40) );Query OK, 0 rows affected (0.00 sec)次に、insertコマンドを使ってテーブルにレコー
-
MySQLでテーブルの日付レコードを変更する方法|UPDATEとDATE_ADD()の使い方
MySQLで保存済みの日付データに年数を加算して変更したい場合、UPDATEコマンドとDATE_ADD()関数を組み合わせることで簡単に実現できます。ここでは、実際のSQLクエリ例を使いながら、日付レコードを変更する手順を順番に解説します。1. テーブルを作成するまず、日付型(date)のカラムを持つテーブルを作成します。mysql> create table DemoTable1984 ( ShippingDate date ); Query OK, 0 rows affected (0.00 sec)2. レコードを挿入する次に、INSERTコマンドを使ってテ