【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か月後」など、さまざまな期間に応じた柔軟な条件指定が可能です。
-
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>
-
MySQLで複数のレコードをすばやく一括挿入するクエリの書き方
MySQLで複数のレコードを効率よく挿入したい場合、INSERT文を何度も実行するのではなく、1つのINSERT文で複数行をまとめて指定するのがおすすめです。この方法ならデータベースとの通信回数が減り、処理速度が大幅に向上します。 基本構文 複数のレコードをすばやく挿入するには、単一のINSERT文を使い、以下の構文に従います。 insert into yourTableName values(yourValue1,yourValue2,...N),(yourValue1,yourValue2,...N).....N; ポイントは、各行の値セットをカンマ(,)で区切って並べるだけというシンプル