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

【MySQL】現在の日付+2週間より前のレコードを取得するクエリの書き方

MySQLでは、CURDATE()関数とDATE_ADD()関数を組み合わせることで、「現在の日付+2週間」よりも前の日付を持つレコードを簡単に抽出できます。この記事では、サンプルテーブルを作成しながら、具体的な手順と実行結果をわかりやすく解説します。

基本となる構文

今回使用する基本構文は以下のとおりです。

select * from yourTableName where yourColumnName < DATE_ADD(CURDATE(), INTERVAL 2 WEEK);

現在の日付の確認

注:この記事では現在の日付を「2019-10-20」として進めます。まず実際に確認しておきましょう。

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

サンプルテーブルの作成

まず、デモ用のテーブルを作成します。

mysql> create table DemoTable1607
    -> (
    -> ShippingDate date
    -> )
    -> ;
Query OK, 0 rows affected (0.58 sec)

レコードの挿入

続いて、insertコマンドを使ってテーブルに複数のレコードを挿入します。

mysql> insert into DemoTable1607 values('2019-10-20');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1607 values('2019-11-04');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1607 values('2019-10-05');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1607 values('2019-09-21');
Query OK, 1 row affected (0.18 sec)

登録済みレコードの確認

select文ですべてのレコードを表示して内容を確認します。

mysql> select * from DemoTable1607;

これにより、以下のような出力が得られます。

+--------------+
| ShippingDate |
+--------------+
| 2019-10-20   |
| 2019-11-04   |
| 2019-10-05   |
| 2019-09-21   |
+--------------+
4 rows in set (0.00 sec)

現在日付+2週間より前のレコードを取得するクエリ

それでは本題です。現在の日付+2週間よりも前の日付を持つレコードを取得するには、以下のようにクエリを記述します。

mysql> select * from DemoTable1607 where ShippingDate < DATE_ADD(CURDATE(), INTERVAL 2 WEEK);

実行すると、次のような出力になります。

+--------------+
| ShippingDate |
+--------------+
| 2019-10-20   |
| 2019-10-05   |
| 2019-09-21   |
+--------------+
3 rows in set (0.06 sec)

結果の解説

現在の日付が「2019-10-20」であるため、DATE_ADD(CURDATE(), INTERVAL 2 WEEK)は「2019-11-03」を返します。したがって、出荷日(ShippingDate)が2019年11月3日より前のレコード、すなわち「2019-10-20」「2019-10-05」「2019-09-21」の3件が該当しました。一方、「2019-11-04」は基準日より後の日付のため、結果から除外されています。このように、INTERVALの値を変更すれば「3週間後」「1か月後」など、さまざまな期間に応じた柔軟な条件指定が可能です。

  1. MySQLで今日から15日前以前のレコードを取得する方法|DATE_SUB()とINTERVALの使い方

    MySQLで「今日から15日前」より前の日付を持つレコードを抽出したい場合には、DATE_SUB()関数とINTERVALの概念を利用します。ここでは、まずサンプル用のテーブルを作成しましょう。mysql> create table DemoTable1845      (      ArrivalDate date      ); Query OK, 0 rows affected (0.00 sec)次に、insertコマンドを使ってテーブルにいくつかのレコードを挿入します。mysql>

  2. MySQLで複数のレコードをすばやく一括挿入するクエリの書き方

    MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル