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

MySQLで日付の範囲を指定してデータを取得する方法|BETWEEN句とcurdate()の使い方

MySQLで特定の日付範囲内のデータを抽出したい場合、BETWEEN句を使用すると簡単に実現できます。この記事では、開始日から現在の日付(curdate())までの間でレコードを検索する方法を、実際のコード例とともにわかりやすく解説します。

基本構文

日付範囲でクエリを実行する際の基本的な構文は以下の通りです。

select *from yourTableName where yourColumnName between 'yourStartingDate' and curdate();

現在の日付を取得する関数には curdate()now() の2つがあり、どちらを使用しても問題ありません。

サンプルテーブルの作成

まずは動作を確認するためのテーブルを作成しましょう。

mysql> create table BetweenDateDemo
   -> (
   -> StartDate datetime
   -> );
Query OK, 0 rows affected (0.78 sec)

次に、date_add() 関数を使って、現在日時から1年〜3年前、および1年〜3年後の日付データを挿入します。

mysql> insert into BetweenDateDemo values(date_add(now(),interval -1 year));
Query OK, 1 row affected (0.11 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval -2 year));
Query OK, 1 row affected (0.13 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval -3 year));
Query OK, 1 row affected (0.13 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 1 year));
Query OK, 1 row affected (0.12 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 2 year));
Query OK, 1 row affected (0.12 sec)

mysql> insert into BetweenDateDemo values(date_add(now(),interval 3 year));
Query OK, 1 row affected (0.16 sec)

登録データの確認

SELECT文でテーブル内の全レコードを表示してみましょう。

mysql> select *from BetweenDateDemo;

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

+---------------------+
| StartDate           |
+---------------------+
| 2017-12-08 11:45:47 |
| 2016-12-08 11:45:56 |
| 2015-12-08 11:46:01 |
| 2019-12-08 11:46:05 |
| 2020-12-08 11:46:11 |
| 2021-12-08 11:46:15 |
+---------------------+
6 rows in set (0.00 sec)

BETWEEN句で日付範囲を指定して検索

それでは、先ほど紹介した構文に従って、「2014年8月12日」から現在までの範囲でデータを抽出します。

mysql> select *from BetweenDateDemo where StartDate between '2014-8-12' and curdate();

実行結果:

+---------------------+
| StartDate           |
+---------------------+
| 2017-12-08 11:45:47 |
| 2016-12-08 11:45:56 |
| 2015-12-08 11:46:01 |
+---------------------+
3 rows in set (0.00 sec)

過去3年分のレコードだけが抽出され、未来の日付データは除外されていることがわかります。

ORDER BYで結果を並べ替える

抽出した結果を見やすく整列させたい場合は、ORDER BY句を組み合わせます。

mysql> select *from BetweenDateDemo where StartDate between '2014-8-12' and curdate() order by StartDate;

実行結果:

+---------------------+
| StartDate           |
+---------------------+
| 2015-12-08 11:46:01 |
| 2016-12-08 11:45:56 |
| 2017-12-08 11:45:47 |
+---------------------+
3 rows in set (0.00 sec)

まとめ

MySQLでは、BETWEEN句と curdate() や now() を組み合わせることで、開始日から今日までといった柔軟な日付範囲検索が簡単に行えます。さらに ORDER BY を加えれば、日付順にソートされた見やすい結果を取得できます。ログ分析や期間集計など、日常的なデータベース操作でぜひ活用してください。

  1. MySQLで2つの日付の範囲内にあるデータをすべて取得する方法(BETWEEN句の使い方)

    はじめにMySQLである2つの日付の間に存在するデータをすべて取得したい場合は、BETWEEN演算子を使用します。BETWEENは指定した開始日と終了日の両方を含む範囲で条件を絞り込めるため、期間検索に非常に便利です。BETWEENを使った基本構文SELECT * FROM テーブル名 WHERE カラム名 BETWEEN 日付1 AND 日付2;それでは、実際にテーブルを作成しながら具体的な使用例を見ていきましょう。サンプルテーブルの作成まず、従業員情報を格納するテーブルを作成します。mysql> CREATE TABLE DemoTable1422 -> ( -

  2. MySQLで2つの日付の間を検索する方法|BETWEEN句の使い方を実例で解説

    MySQLで2つの日付の間を検索するには?MySQLで特定の2つの日付の間に該当するレコードを検索したい場合は、BETWEENキーワードを使用します。本記事では、サンプルテーブルの作成からデータの挿入、そしてBETWEEN句を使った日付範囲検索まで、具体的な手順を順番に解説していきます。1. サンプルテーブルの作成まず、顧客名とオファー期間(開始日・終了日)を管理するテーブルを作成しましょう。mysql> create table DemoTable1456    -> (    -> Custo