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

MySQLで特定の月と年に基づいてレコードを取得する方法

MySQLで特定の月と年に基づいてレコードを取得する方法

日付データから特定の月と年に該当するレコードだけを抽出したい場合、MySQLの MONTH() 関数と YEAR() 関数を組み合わせて使用します。ここでは、実際にテーブルを作成し、データを挿入して、条件に合うレコードを取得するまでの手順を具体的に解説します。

1. サンプルテーブルの作成

まず、日付型(DATE)のカラムを持つテーブルを作成します。

mysql> create table DemoTable1846
    (
    PurchaseDate date
    );
Query OK, 0 rows affected (0.00 sec)

2. レコードの挿入

INSERT文を使って、異なる年月の日付データを複数件登録します。

mysql> insert into DemoTable1846 values('2019-01-10');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1846 values('2019-12-24');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1846 values('2018-09-21');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1846 values('2017-10-26');
Query OK, 1 row affected (0.00 sec)

3. 登録データの確認

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

mysql> select * from DemoTable1846;

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

+--------------+
| PurchaseDate |
+--------------+
| 2019-01-10   |
| 2019-12-24   |
| 2018-09-21   |
| 2017-10-26   |
+--------------+
4 rows in set (0.00 sec)

4. 特定の月と年でレコードを抽出する

ここが本題です。WHERE句の中で MONTH() 関数と YEAR() 関数を使い、「月が12かつ年が2019」という条件を指定します。

mysql> select * from DemoTable1846
    where month(PurchaseDate)=12
    and year(PurchaseDate)=2019;

実行すると、条件に一致したレコードのみが返されます。

+--------------+
| PurchaseDate |
+--------------+
| 2019-12-24   |
+--------------+
1 row in set (0.00 sec)

補足:パフォーマンスに関する注意点

MONTH()YEAR() をWHERE句で使用すると、インデックスがあってもフルスキャンになる可能性があります。大量のデータを扱う場合は、範囲指定(例:PurchaseDate >= '2019-12-01' AND PurchaseDate < '2020-01-01')に書き換えることで、インデックスを活用した高速な検索が可能になります。用途に応じて使い分けるとよいでしょう。

  1. MySQLのREGEXPを使って数字とドットを含むレコードを取得する方法

    MySQLでは、REGEXP演算子を使用することで、正規表現にマッチするレコードを簡単に抽出できます。本記事では、「数字とドット(.)」で構成されたバージョン文字列のみを取得する方法を、具体的なサンプルコードとともに解説します。サンプルテーブルの作成まず、テーブルを作成しましょう。mysql> create table DemoTable -> ( -> Version varchar(20) -> );Query OK, 0 rows affected (0.77 sec)レコードの挿入次に、INSERTコマンドを使用して、テーブルにいくつかのレコー

  2. MySQLで特定の年の開始日と終了日を取得する方法

    MySQLで特定の年に該当するレコードの開始日(StartDate)と終了日(EndDate)を抽出するには、YEAR()関数を使用します。この関数は日付から「年」の部分だけを取り出すことができるため、年の条件での絞り込みに便利です。ここでは、実際にテーブルを作成し、サンプルデータを登録して、特定の年でレコードを検索する手順を順番に解説します。1. サンプルテーブルを作成するまず、開始日と終了日を格納するためのテーブルを作成します。mysql> create table DemoTable1843 ( StartDate date, EndDate date