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など)を調整するだけで柔軟に対応できるため、集計処理やレポート作成などでも幅広く活用できます。
-
MySQLで現在の日付より前の日付データを抽出する方法
MySQLでは、NOW() 関数と比較演算子を使うことで、現在の日時より前の日付を持つレコードを簡単に抽出できます。この記事では、実際にテーブルを作成し、サンプルデータを登録したうえで、現在日時より過去の日付レコードを取得する手順を解説します。 1. サンプルテーブルの作成 まず、日付型(DATETIME)のカラムを持つテーブルを作成しましょう。 mysql> create table DemoTable1877 ( DueDate datetime ); Query OK, 0 rows affected (0.00 sec) 2. テストデータの挿入 次に、IN
-
MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法
MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。 1. 現在の日付を確認する まず、curdate()関数で現在の日付を取得してみましょう。 mysql> select curdate(); 実行すると、以下のような結果が表示されます。 +------------+ | curdate() | +------------+ | 2019-12-15 | +------------+ 1 row