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> insert into DemoTable1845 values('2019-12-02');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-11-18');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-12-18');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-12-25');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1845 values('2019-11-15');
Query OK, 1 row affected (0.00 sec)select文でテーブル内のすべてのレコードを表示してみましょう。
mysql> select * from DemoTable1845;
これにより、以下の出力が得られます。
+-------------+ | ArrivalDate | +-------------+ | 2019-12-02 | | 2019-11-18 | | 2019-12-18 | | 2019-12-25 | | 2019-11-15 | +-------------+ 5 rows in set (0.00 sec)
現在の日付は次の通りです。
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2019-12-02 20:47:05 | +---------------------+ 1 row in set (0.00 sec)
それでは、今日から15日前より前のレコードを取得するためのクエリを見ていきましょう。
mysql> select * from DemoTable1845 where ArrivalDate < DATE_SUB(NOW(), INTERVAL 15 DAY);
実行すると、以下の出力が得られます。
+-------------+ | ArrivalDate | +-------------+ | 2019-11-15 | +-------------+ 1 row in set (0.00 sec)
クエリのポイント解説
上記のクエリでは、NOW()で現在の日時を取得し、DATE_SUB(NOW(), INTERVAL 15 DAY)によってその日時から15日分を差し引いています。さらにWHERE句でArrivalDateがその計算結果より小さい(=15日以上前の)レコードだけを絞り込んでいます。
今回の例では基準日が2019-12-02のため、15日前は2019-11-17となり、条件に該当するのは2019-11-15のレコードのみです。なお、INTERVALの単位にはDAY以外にもMONTHやYEARなどを指定できるため、「1か月前」「1年前」といった期間指定によるデータ抽出にも幅広く応用できます。
-
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
-
MySQLでTRUE/FALSEのレコードを0/1として表示する方法
MySQLでTRUE/FALSEのレコードを0/1として表示する方法MySQLでは、カラムのデータ型をBOOLEANとして定義することで、TRUE/FALSEの値が自動的に0と1として表示されます。BOOLEAN型は内部的にはTINYINT(1)のエイリアスであり、TRUEは1、FALSEは0として扱われます。以下、具体的な手順を解説します。1. テーブルの作成まず、BOOLEAN型のカラムを含むテーブルを作成しましょう。mysql> create table DemoTable2035 -> (