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

MySQLで14日前より新しい日付のレコードを取得するクエリの書き方

この記事では、MySQLを使って「14日前より新しい日付」を持つレコードを抽出する方法を解説します。CURDATE()関数とDATE_SUB()関数を組み合わせることで、簡単に目的のデータを取得できます。テーブル作成から順に見ていきましょう。

1. サンプルテーブルの作成

まず、日付を格納するカラムを持つテーブルを作成します。

mysql> create table DemoTable1392
    -> (
    -> ArrivalDate date
    -> );
Query OK, 0 rows affected (0.43 sec)

2. レコードの挿入

INSERT文を使って、テーブルにいくつかのデータを登録します。

mysql> insert into DemoTable1392 values('2019-09-10');
Query OK, 1 row affected (0.46 sec)
mysql> insert into DemoTable1392 values('2019-09-26');
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable1392 values('2019-09-12');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1392 values('2018-09-20');
Query OK, 1 row affected (0.31 sec)
mysql> insert into DemoTable1392 values('2019-10-11');
Query OK, 1 row affected (0.11 sec)

3. 登録したデータの確認

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

mysql> select * from DemoTable1392;

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

+-------------+
| ArrivalDate |
+-------------+
| 2019-09-10  |
| 2019-09-26  |
| 2019-09-12  |
| 2018-09-20  |
| 2019-10-11  |
+-------------+
5 rows in set (0.00 sec)

4. 現在の日付を確認する

CURDATE()関数を使うと、現在の日付を取得できます。

mysql> select curdate();
+------------+
| curdate()  |
+------------+
| 2019-09-26 |
+------------+
1 row in set (0.00 sec)

5. 14日前より新しい日付を取得するクエリ

それが本題となるクエリです。DATE_SUB()関数で現在の日付から14日分を差し引いた値と比較することで、14日より新しい日付のレコードだけを抽出できます。

mysql> select * from DemoTable1392
    -> where ArrivalDate > date_sub(curdate(), interval 14 day);

実行結果は次のようになります。

+-------------+
| ArrivalDate |
+-------------+
| 2019-09-26  |
| 2019-10-11  |
+-------------+
2 rows in set (0.03 sec)

クエリのポイント解説

  • CURDATE(): 現在の日付を返す関数です。
  • DATE_SUB(日付, INTERVAL n DAY): 指定した日付からn日を減算した値を返します。
  • WHERE句で「ArrivalDate が(現在日付 − 14日)より大きい」という条件を指定することで、直近14日間より新しい日付のレコードのみを取得しています。

INTERVAL 14 DAYの部分の数値を変更すれば、30日や90日など、任意の期間に柔軟に対応できます。また、DATETIME型のカラムを扱いたい場合はNOW()関数を使用するとよいでしょう。

  1. MySQLで基準日から30日より古い日付データを削除するクエリの書き方

    MySQLで特定の日付から30日以上前のレコードを削除する方法MySQLでは、ある基準日を起点として、そこから30日より古い日付データを持つレコードを削除できます。DELETE文とINTERVAL演算子を組み合わせることで、簡単に実装可能です。基本構文以下が基本的な構文です。delete from yourTableName where yourColumnName < (yourAnotherDateValue - INTERVAL 30 DAY);それでは、実際にサンプルテーブルを作成して動作を確認してみましょう。1. テーブルの作成まず、テスト用のテーブルを作成します。mysql>

  2. MySQLで現在の日付に11日を追加する方法【DATE_ADD関数の使い方】

    はじめにMySQLでは、DATE_ADD()関数を使うことで、日付に指定した日数を簡単に加算できます。本記事では、現在の日付(CURDATE())に11日を追加する方法を、テーブル作成からクエリ実行まで具体的な例を交えて解説します。サンプルテーブルの作成まず、デモ用のテーブルを作成しましょう。mysql> create table DemoTable1994 ( ArrivalDate date ); Query OK, 0 rows affected (5.33 sec)テストデータの挿入続いて、INSERTコマンドを使用してテーブルに複数のレコードを挿入します。mysql&g