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

MySQLで現在の日付から3週間前以降のレコードを取得するクエリ(DATE_SUBの使い方)


DATE_SUB()関数とは

MySQLで「現在の日付から3週間前以降」のデータを取得したい場合には、DATE_SUB()関数を利用するのが便利です。この関数は、指定した日付から任意の期間(INTERVAL)を減算した値を返します。

サンプルテーブルの作成

まずはテーブルを作成しましょう。

mysql> create table DemoTable
    (
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ArrivalDate datetime
    );
Query OK, 0 rows affected (1.02 sec)

:ここでは、現在の日付が「2019-06-08」であるものとして説明します。

レコードの挿入

次に、insertコマンドを使ってテーブルにいくつかのレコードを追加します。

mysql> insert into DemoTable(ArrivalDate) values('2019-05-15');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(ArrivalDate) values('2019-06-08');
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable(ArrivalDate) values('2019-05-20');
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable(ArrivalDate) values('2019-05-12');
Query OK, 1 row affected (0.12 sec)

登録済みレコードの確認

select文を使って、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable;

出力結果

+----+---------------------+
| Id | ArrivalDate         |
+----+---------------------+
| 1  | 2019-05-15 00:00:00 |
| 2  | 2019-06-08 00:00:00 |
| 3  | 2019-05-20 00:00:00 |
| 4  | 2019-05-12 00:00:00 |
+----+---------------------+
4 rows in set (0.00 sec)

現在の日付−3週間以降のレコードを取得するクエリ

以下が、目的の日付データを抽出するためのクエリです。WHERE句でDATE_SUB(curdate(), INTERVAL 3 WEEK)を使用し、「今日の日付から3週間前」よりも後の日付を持つレコードだけを取り出しています。

mysql> select ArrivalDate from DemoTable where ArrivalDate> DATE_SUB(curdate(),INTERVAL 3 WEEK);

出力結果

+---------------------+
| ArrivalDate         |
+---------------------+
| 2019-06-08 00:00:00 |
| 2019-05-20 00:00:00 |
+---------------------+
2 rows in set (0.00 sec)

実行結果のポイント

現在の日付が2019-06-08の場合、3週間前にあたるのは2019-05-18です。そのため、それ以前の「2019-05-15」と「2019-05-12」のレコードは除外され、条件を満たす2件のみが出力されました。

なお、INTERVALの部分を「3 MONTH」や「7 DAY」などに変更すれば、月単位・日単位での絞り込みにも簡単に応用できます。また、時刻まで含めて比較したい場合は、curdate()の代わりにnow()を使用するとよいでしょう。

  1. MySQLで指定した日付(2010-11-04)から現在の日付までのレコードを抽出する方法

    MySQLでは、比較演算子 >= を使うことで、特定の日付から現在までの範囲にあるレコードを簡単に抽出できます。この記事では、サンプルテーブルの作成からデータの挿入、そして指定日(2010-11-04)以降のデータを取得するクエリまで、実際の実行例とともに順を追って解説します。1. テーブルの作成まず、日付型(DATE)カラムを持つテーブルを作成しましょう。mysql> create table DemoTable ( Joiningdate date ); Query OK, 0 rows affected (0.56 sec)2. レコードの挿入INSERTコマンドを使

  2. MySQLでSELECT *を使って現在の日付のレコードを検索する方法

    現在の日付を取得するには CURDATE() 関数を使用します。さらに、STR_TO_DATE() 関数で文字列を日付型に変換し、現在の日付と比較することで、該当するレコードを抽出できます。以下に基本的な構文を示します。基本構文select *from テーブル名 where str_to_date(カラム名,書式指定子)=curdate();それでは、現在の日付が「27/10/2019」である場合を例に、具体的な手順を見ていきましょう。1. テーブルの作成まず、サンプル用のテーブルを作成します。mysql> create table DemoTable -> (