MySQLで現在日から14週間以内の日付レコードを抽出する期間クエリの書き方
現在の日付からさかのぼって14週間以内のレコードを取得したい場合は、BETWEEN句とDATE_SUB()関数を組み合わせると簡単に実現できます。この記事では、サンプルテーブルを使いながら具体的な手順を解説します。
1. サンプルテーブルを作成する
まず、日付を格納するカラムを持つテーブルを作成します。
mysql> create table DemoTable
(
ArrivalDate date
);
Query OK, 0 rows affected (0.93 sec)2. テストデータを挿入する
ここでは、現在日が 2019-08-31 であるものとして話を進めます。INSERT文でいくつかレコードを登録しましょう。
mysql> insert into DemoTable values('2019-04-21');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable values('2019-03-01');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('2019-09-01');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2019-08-31');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('2019-06-30');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable values('2019-06-01');
Query OK, 1 row affected (0.12 sec)3. 登録したレコードを確認する
SELECT文ですべてのレコードを表示します。
mysql> select *from DemoTable;
実行結果は以下の通りです。
+-------------+ | ArrivalDate | +-------------+ | 2019-04-21 | | 2019-03-01 | | 2019-09-01 | | 2019-08-31 | | 2019-06-30 | | 2019-06-01 | +-------------+ 6 rows in set (0.00 sec)
4. 過去14週間のレコードを抽出するクエリ
次のクエリを実行すると、現在日から14週間前までの範囲に含まれるレコードだけを取得できます。
mysql> select *from DemoTable where ArrivalDate between date_sub(curdate(), interval 14 week) and curdate();
クエリのポイント
- curdate(): 現在の日付(ここでは 2019-08-31)を返します。
- date_sub(curdate(), interval 14 week): 現在日からちょうど14週間前の日付(2019-06-01)を計算します。
- BETWEEN: この2つの日付の範囲に含まれるレコードのみを抽出します。境界値となる両端の日付も結果に含まれます。
実行結果
+-------------+ | ArrivalDate | +-------------+ | 2019-08-31 | | 2019-06-30 | | 2019-06-01 | +-------------+ 3 rows in set (0.00 sec)
6件中3件のレコードが抽出されました。14週間より前の「2019-04-21」と「2019-03-01」、そして現在日より未来の「2019-09-01」は除外されています。このように、BETWEEN句とDATE_SUB()関数を組み合わせれば、「直近◯週間」のような期間指定の検索をシンプルなSQLで実装できます。
-
MySQLで月の範囲を指定してレコードを取得する方法
MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795 ( Name varchar(20), DueDate date
-
MySQLで現在の日付と翌日のレコードを条件に特定の列を抽出する方法
MySQLでは、CURDATE()関数を使うことで、現在の日付やその翌日に該当するレコードを簡単に抽出できます。この記事では、実際のサンプルを使いながら、現在の日付と翌日の出荷日を持つレコードから特定の列を選択して取得する方法を解説します。 1. 現在の日付を確認する まず、curdate()関数で現在の日付を取得してみましょう。 mysql> select curdate(); 実行すると、以下のような結果が表示されます。 +------------+ | curdate() | +------------+ | 2019-12-15 | +------------+ 1 row