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

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()でラップして日付部分だけを比較に使うのが確実です。

キャンペーン期間中の商品抽出や有効契約の絞り込みなど、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。

  1. MySQLで指定した2つの日付の間にあるレコードの合計値を取得する方法

    はじめにMySQLで特定の2つの日付の間に存在するレコードの数値合計を求めたい場合は、BETWEENキーワードを使用します。BETWEEN句は、指定した範囲(開始日と終了日を含む)に該当するレコードを抽出できる便利な演算子です。この記事では、実際にテーブルを作成し、日付の範囲を指定して合計値を取得する手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。ここでは「Value(数値)」と「PurchaseDate(購入日時)」というカラムを持つテーブルを定義します。mysql> create table DemoTable1444  -> (  -> V

  2. MySQLで単語間のスペースを削除する方法:REPLACE関数の使い方

    MySQLで単語間のスペースを削除するには?MySQLで文字列内の特定のスペースを削除したい場合は、REPLACE()関数を使用します。REPLACE()関数は、指定した文字列を別の文字列に置き換えることができるため、スペースの削除にも活用できます。ここでは、「This is MySQL」のような文字列から「is」の後のスペースを削除する例を通して、具体的な手順を解説します。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable1506  -> (  -> Title text  -> );Query OK