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

MySQLで日付をフィルタリングし、特定の月のレコードだけを取得する方法

MySQLで特定の月の日付レコードのみを抽出するには?

MySQLで日付データを扱う際、「特定の年月に該当するレコードだけを取り出したい」というケースはよくあります。本記事では、サンプルテーブルを作成しながら、LIKE演算子を使って特定の月の日付レコードをフィルタリングする手順をわかりやすく解説します。

1. サンプルテーブルを作成する

まず、日付を文字列として格納するテーブルを作成します。

mysql> create table DemoTable
(
    AdmissionDate varchar(100)
);
Query OK, 0 rows affected (1.06 sec)

2. テストデータを挿入する

INSERT文を使って、いくつかの日付レコードを登録します。

mysql> insert into DemoTable values('2018-01-21');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-08-13');
Query OK, 1 row affected (0.56 sec)
mysql> insert into DemoTable values('2019-07-08');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2016-02-12');
Query OK, 1 row affected (0.14 sec)

3. 登録した全レコードを確認する

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

mysql> select *from DemoTable;

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

+---------------+
| AdmissionDate |
+---------------+
| 2018-01-21 |
| 2019-08-13 |
| 2019-07-08 |
| 2016-02-12 |
+---------------+
4 rows in set (0.00 sec)

4. 特定の月(2019年8月)のレコードを抽出する

ここが本題です。LIKE演算子とパーセント(%)ワイルドカードを組み合わせることで、「2019年8月」の日付レコードのみを抽出できます。「2019-08%」というパターンは、「2019-08」で始まるすべての文字列に一致します。

mysql> select *from DemoTable where AdmissionDate like '2019-08%';

実行結果:

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-13 |
+---------------+
1 row in set (0.04 sec)

補足:DATE型カラムの場合はMONTH関数とYEAR関数が便利

上記の例ではAdmissionDateをvarchar型として扱いましたが、実際の開発ではDATE型での管理が推奨されます。DATE型のカラムに対しては、MONTH()関数とYEAR()関数を組み合わせることで、より柔軟に月単位の抽出が可能です。

mysql> select *from DemoTable 
where month(AdmissionDate) = 8 and year(AdmissionDate) = 2019;

この方法なら「毎年8月のレコードをすべて取得する」といった条件指定も簡単に行えます。用途に応じて、LIKE演算子と日付関数を使い分けるとよいでしょう。

  1. MySQLで特定ユーザーのログイン時刻を更新する方法をわかりやすく解説

    MySQLで特定のユーザーのログイン時刻を更新したい場合は、UPDATE文にORDER BYとLIMITを組み合わせると便利です。この記事では、実際のサンプルコードと実行結果をもとに、手順を詳しく解説します。1. サンプルテーブルを作成するまず、ユーザーID・ログイン時刻・ユーザー名の3つのカラムを持つテーブルを作成します。mysql> create table DemoTable1911 ( UserId int, UserLoggedInTime time, UserName varchar(20) ); Query OK, 0 rows af

  2. MySQLで特定の日付のレコード数をカウントする方法

    MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946     (     ShippingDate date     ); Quer