MySQLで2つの日付の間を検索する方法|BETWEEN句の使い方を実例で解説
MySQLで2つの日付の間を検索するには?
MySQLで特定の2つの日付の間に該当するレコードを検索したい場合は、BETWEENキーワードを使用します。本記事では、サンプルテーブルの作成からデータの挿入、そしてBETWEEN句を使った日付範囲検索まで、具体的な手順を順番に解説していきます。
1. サンプルテーブルの作成
まず、顧客名とオファー期間(開始日・終了日)を管理するテーブルを作成しましょう。
mysql> create table DemoTable1456
-> (
-> CustomerName varchar(30),
-> StartOfferDate date,
-> EndOfferDate date
-> );
Query OK, 0 rows affected (0.54 sec)
このテーブルは、以下の3つのカラムで構成されています。
- CustomerName:顧客名(varchar型)
- StartOfferDate:オファーの開始日(date型)
- EndOfferDate:オファーの終了日(date型)
2. レコードの挿入
次に、INSERTコマンドを使ってテーブルにデータを登録します。
mysql> insert into DemoTable1456 values('Chris','2019-09-01','2019-09-30');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1456 values('David','2019-09-01','2019-10-30');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1456 values('Bob','2018-10-01','2018-10-20');
Query OK, 1 row affected (0.15 sec)3. 登録した全レコードを確認する
SELECT文を実行して、テーブルに登録されたすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1456;
実行結果は以下の通りです。
+--------------+----------------+--------------+
| CustomerName | StartOfferDate | EndOfferDate |
+--------------+----------------+--------------+
| Chris | 2019-09-01 | 2019-09-30 |
| David | 2019-09-01 | 2019-10-30 |
| Bob | 2018-10-01 | 2018-10-20 |
+--------------+----------------+--------------+
3 rows in set (0.00 sec)
4. BETWEEN句で2つの日付の間を検索する
ここからが本題です。現在の日付(date(now()))が「StartOfferDate」と「EndOfferDate」の間に含まれるレコードだけを抽出するには、WHERE句と組み合わせて次のようにクエリを記述します。
mysql> select * from DemoTable1456
-> where date(now()) between StartOfferDate and EndOfferDate;
実行結果:
+--------------+----------------+--------------+
| CustomerName | StartOfferDate | EndOfferDate |
+--------------+----------------+--------------+
| David | 2019-09-01 | 2019-10-30 |
+--------------+----------------+--------------+
1 row in set (0.04 sec)
この例では、現在日付がオファー期間内に該当する「David」のレコードのみが取得されました。「Chris」や「Bob」のオファー期間はすでに終了しているため、検索結果には含まれていません。
まとめ
BETWEENキーワードを使えば、指定した2つの日付の間に含まれるレコードを簡単に抽出できます。ポイントは以下の2点です。
- 境界値も含まれる:BETWEENは開始日と終了日の両端の日付を含んで判定されます。
- date(now())で当日を取得:NOW()関数は時刻情報も持つため、date()でラップして日付部分だけを比較に使うのが確実です。
キャンペーン期間中の商品抽出や有効契約の絞り込みなど、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
MySQLで指定した2つの日付の間にあるレコードの合計値を取得する方法
はじめにMySQLで特定の2つの日付の間に存在するレコードの数値合計を求めたい場合は、BETWEENキーワードを使用します。BETWEEN句は、指定した範囲(開始日と終了日を含む)に該当するレコードを抽出できる便利な演算子です。この記事では、実際にテーブルを作成し、日付の範囲を指定して合計値を取得する手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。ここでは「Value(数値)」と「PurchaseDate(購入日時)」というカラムを持つテーブルを定義します。mysql> create table DemoTable1444 -> ( -> V
-
MySQLで単語間のスペースを削除する方法:REPLACE関数の使い方
MySQLで単語間のスペースを削除するには?MySQLで文字列内の特定のスペースを削除したい場合は、REPLACE()関数を使用します。REPLACE()関数は、指定した文字列を別の文字列に置き換えることができるため、スペースの削除にも活用できます。ここでは、「This is MySQL」のような文字列から「is」の後のスペースを削除する例を通して、具体的な手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable1506 -> ( -> Title text -> );Query OK