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

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で実装できます。

  1. MySQLで月の範囲を指定してレコードを取得する方法

    MySQLでは、YEAR()関数とMONTH()関数、さらにBETWEEN演算子を組み合わせることで、特定の月の範囲に該当するレコードを簡単に抽出できます。ここでは、前年の7月〜12月と当年の1月〜7月というように、年をまたいだ月の範囲でデータを取得する方法を解説します。 サンプルテーブルの作成 まず、テーブルを作成します。 mysql> create table DemoTable1795      (      Name varchar(20),      DueDate date  

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

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