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の方が直感的でおすすめです。また、日付カラムにインデックスを設定しておけば、大量のデータを扱う場合でも高速に検索できます。
-
MySQLで月の範囲を指定してレコードを取得する方法
MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795 ( Name varchar(20), DueDate date
-
MySQLで特定の日付のレコード数をカウントする方法
MySQLでは、COUNT(*)関数とWHERE句を組み合わせることで、特定の日付に該当するレコードの件数を簡単に取得できます。この記事では、サンプルテーブルを作成し、指定した日付のデータ件数をカウントする手順を順番に解説します。 1. サンプルテーブルの作成 まず、日付型(DATE)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1946 ( ShippingDate date ); Quer