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

MySQLで現在日付から3か月前までの期間のデータを抽出する方法

MySQLでは、BETWEEN句とINTERVAL演算子を組み合わせることで、現在日付からさかのぼって3か月以内の日付データを簡単に抽出できます。本記事では、実際にテーブルを作成し、サンプルデータを使って手順をわかりやすく解説します。

1. テーブルの作成

まず、日付型(DATE)のカラムを持つテーブルを作成します。

mysql> create table DemoTable
    -> (
    -> AdmissionDate date
    -> );
Query OK, 0 rows affected (0.84 sec)

2. サンプルデータの挿入

次に、INSERT文を使っていくつかのレコードを登録します。

mysql> insert into DemoTable values('2019-09-30');
Query OK, 1 row affected (0.19 sec)

mysql> insert into DemoTable values('2019-10-01');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('2019-03-30');
Query OK, 1 row affected (0.21 sec)

mysql> insert into DemoTable values('2019-04-24');
Query OK, 1 row affected (0.17 sec)

3. 登録データの確認

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable;

出力結果

+---------------+
| AdmissionDate |
+---------------+
| 2019-09-30    |
| 2019-10-01    |
| 2019-03-30    |
| 2019-04-24    |
+---------------+
4 rows in set (0.00 sec)

4. 現在日付から3か月前までのデータを抽出するクエリ

以下のクエリを実行すると、現在日付(CURDATE())から3か月前までの範囲に含まれる日付だけを取得できます。

mysql> select *from DemoTable WHERE AdmissionDate BETWEEN curdate() - INTERVAL 3 MONTH AND curdate();

出力結果

+---------------+
| AdmissionDate |
+---------------+
| 2019-03-30    |
| 2019-04-24    |
+---------------+
2 rows in set (0.00 sec)

クエリのポイント解説

このクエリを構成する各要素の役割は以下の通りです。

  • CURDATE():現在の日付を返す関数です。
  • INTERVAL 3 MONTH:「3か月」という期間を表す演算子です。
  • BETWEEN A AND B:A以上・B以下の範囲に含まれる値を抽出します。

つまり、「curdate() - INTERVAL 3 MONTH」で3か月前の日付を算出し、BETWEEN句によって「3か月前〜今日」の範囲に該当するレコードのみを絞り込んでいます。実行結果を見ると、範囲外の「2019-09-30」と「2019-10-01」は除外され、条件に合致する2件だけが表示されていることが確認できます。

なお、期間を変更したい場合は「INTERVAL 3 MONTH」の数値や単位(DAY、YEARなど)を調整するだけで柔軟に対応できるため、集計処理やレポート作成などでも幅広く活用できます。

  1. MySQLで現在の日付より前の日付データを抽出する方法

    MySQLでは、NOW() 関数と比較演算子を使うことで、現在の日時より前の日付を持つレコードを簡単に抽出できます。この記事では、実際にテーブルを作成し、サンプルデータを登録したうえで、現在日時より過去の日付レコードを取得する手順を解説します。 1. サンプルテーブルの作成 まず、日付型(DATETIME)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1877 ( DueDate datetime ); Query OK, 0 rows affected (0.00 sec) 2. テストデータの挿入 次に、IN

  2. MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法

    MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。 1. 現在の日付を確認する まず、curdate()関数で現在の日付を取得してみましょう。 mysql> select curdate(); 実行すると、以下のような結果が表示されます。 +------------+ | curdate() | +------------+ | 2019-12-15 | +------------+ 1 row