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

MySQLクエリで現在の日付が特定の日付範囲内に含まれるかどうかを確認する方法

MySQLでは、CURDATE()関数と比較演算子を組み合わせることで、現在の日付が特定の日付範囲(開始日〜終了日)に含まれているかどうかを簡単に判定できます。この記事では、実際のサンプルコードを使いながら手順を解説します。

サンプルテーブルの作成

まず、開始日(StartDate)と終了日(EndDate)という2つのDATE型カラムを持つテーブルを作成しましょう。

mysql> create table DemoTable1448
    -> (
    -> StartDate date,
    -> EndDate date
    -> );
Query OK, 0 rows affected (0.46 sec)

テストデータの挿入

次に、INSERTコマンドを使用して、複数の日付範囲レコードをテーブルに挿入します。

mysql> insert into DemoTable1448 values('2019-01-21','2019-03-22');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable1448 values('2019-04-05','2019-10-10');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1448 values('2019-10-01','2019-10-29');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1448 values('2018-12-31','2019-12-31');
Query OK, 1 row affected (0.12 sec)

登録データの確認

SELECT文を実行して、テーブルに登録されたすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1448;

上記のSELECT文を実行すると、次のような結果が出力されます。

+------------+------------+
| StartDate  | EndDate    |
+------------+------------+
| 2019-01-21 | 2019-03-22 |
| 2019-04-05 | 2019-10-10 |
| 2019-10-01 | 2019-10-29 |
| 2018-12-31 | 2019-12-31 |
+------------+------------+
4 rows in set (0.00 sec)

現在の日付が日付範囲内にあるか確認するクエリ

ここでは、現在の日付が「2019-10-05」であると仮定します。

2019-10-05

現在の日付(CURDATE())が各レコードのStartDate以上であり、かつEndDate以下であるかを判定するには、AND条件を組み合わせて以下のようなクエリを実行します。

mysql> select (curdate() >=StartDate and curdate() <=EndDate) as DateInRange from DemoTable1448;

実行結果は次の通りです。

+-------------+
| DateInRange |
+-------------+
|           0 |
|           1 |
|           1 |
|           1 |
+-------------+
4 rows in set (0.04 sec)

結果の見方

DateInRangeカラムには、条件を満たす場合は「1」、満たさない場合は「0」が返されます。上記の例では、最初のレコード(2019-01-21〜2019-03-22)のみ現在の日付が範囲外のため「0」となり、残りの3つのレコードには現在の日付(2019-10-05)が範囲内に含まれるため「1」が表示されています。

ポイントまとめ

CURDATE()は現在の日付を「YYYY-MM-DD」形式で返す関数です。また、両端を含む範囲判定ができるBETWEEN句を使えば、(curdate() BETWEEN StartDate AND EndDate)のように記述することもでき、より簡潔に同じ判定を行えます。

  1. MySQLで指定した日付(2010-11-04)から現在の日付までのレコードを抽出する方法

    MySQLでは、比較演算子 >= を使うことで、特定の日付から現在までの範囲にあるレコードを簡単に抽出できます。この記事では、サンプルテーブルの作成からデータの挿入、そして指定日(2010-11-04)以降のデータを取得するクエリまで、実際の実行例とともに順を追って解説します。1. テーブルの作成まず、日付型(DATE)カラムを持つテーブルを作成しましょう。mysql> create table DemoTable ( Joiningdate date ); Query OK, 0 rows affected (0.56 sec)2. レコードの挿入INSERTコマンドを使

  2. JavaとMySQLで現在の日付に月数を追加する方法(INTERVAL句の使い方)

    JavaとMySQLを組み合わせて現在の日付に月数を追加するには、INTERVAL句を使用します。以下がその基本構文です。 String query; query = insert into テーブル名 values(curdate()+interval 追加する月数 month); 現在の日付を確認する まず、curdate()関数を使って現在の日付を確認してみましょう。 mysql> select curdate(); +------------+ | curdate() | +------------+ | 2020-10-25 | +------------+ 1 row in