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

MySQLで特定の範囲内の日付データを取得する方法|日付比較の基本を解説

MySQLでは、比較演算子(>= や <=)や BETWEEN 演算子を使うことで、特定の期間に該当する日付データを簡単に抽出できます。この記事では、実際にテーブルを作成し、指定した範囲内の日付を取得する手順をわかりやすく解説します。

1. テーブルを作成する

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

mysql> create table DemoTable
(
    AdmissionDate date
);
Query OK, 0 rows affected (0.73 sec)

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

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

mysql> insert into DemoTable values('2019-08-31');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('2019-09-01');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-05-10');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('2019-06-12');
Query OK, 1 row affected (0.25 sec)

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

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

mysql> select *from DemoTable;

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

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-31    |
| 2019-09-01    |
| 2019-05-10    |
| 2019-06-12    |
+---------------+
4 rows in set (0.00 sec)

4. 日付比較で範囲内のデータを取得する

ここからが本題です。比較演算子「>=」と「<=」を組み合わせることで、開始日と終了日の間にある日付だけを抽出できます。以下のクエリでは、「2019-06-01」から「2019-08-31」までの範囲に含まれるレコードを取得しています。

mysql> select *from DemoTable where AdmissionDate >='2019-06-01' and AdmissionDate <='2019-08-31';

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

+---------------+
| AdmissionDate |
+---------------+
| 2019-08-31    |
| 2019-06-12    |
+---------------+
2 rows in set (0.00 sec)

ご覧のとおり、範囲外の「2019-09-01」と「2019-05-10」は除外され、条件に合致する2件のみが返されました。

BETWEEN演算子を使った書き方

同じ結果は、BETWEEN演算子を使うともっと簡潔に記述できます。

mysql> select *from DemoTable 
where AdmissionDate between '2019-06-01' and '2019-08-31';

BETWEENは「以上〜以下」の範囲指定となるため、境界値である「2019-06-01」や「2019-08-31」そのものも検索対象に含まれる点に注意してください。

まとめ

MySQLで特定の範囲の日付を取得するには、比較演算子(>=、<=)またはBETWEEN演算子を使用します。どちらの方法でも同じ結果が得られますが、SQLの可読性を重視するならBETWEENの方が直感的でおすすめです。また、日付カラムにインデックスを設定しておけば、大量のデータを扱う場合でも高速に検索できます。

  1. MySQLで月の範囲を指定してレコードを取得する方法

    MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795      (      Name varchar(20),      DueDate date  

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

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