MySQLで過去7日前のレコードから日時(DateTime)の行を取得する方法
MySQLで「ちょうど7日前」の日付に該当するレコードを取得したい場合、INTERVAL 7 DAYの概念を利用すると簡単に実現できます。本記事では、実際にテーブルを作成し、サンプルデータを投入したうえで、過去7日前のDateTime行を抽出するクエリを解説します。
サンプルテーブルの作成
まずは、以下のようにテーブルを作成しましょう。
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
AdmissionDate datetime
);
Query OK, 0 rows affected (0.83 sec)注意: ここでは、現在の日付を「2019-08-23」として説明を進めます。
テストデータの挿入
次に、INSERTコマンドを使ってテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable(AdmissionDate) values('2019-01-23');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-15');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-16');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable(AdmissionDate) values('2019-08-24');
Query OK, 1 row affected (0.14 sec)登録済みレコードの確認
SELECT文を使って、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable;
実行すると、次のような結果が出力されます。
+----+---------------------+ | Id | AdmissionDate | +----+---------------------+ | 1 | 2019-01-23 00:00:00 | | 2 | 2019-08-15 00:00:00 | | 3 | 2019-08-16 00:00:00 | | 4 | 2019-08-24 00:00:00 | +----+---------------------+ 4 rows in set (0.00 sec)
過去7日前のDateTime行を取得するクエリ
それでは本題です。現在の日付(CURDATE())からINTERVAL 7 DAYを差し引いた日付と一致するレコードを抽出するには、以下のクエリを使用します。
mysql> select *from DemoTable where date(AdmissionDate)=CURDATE() - interval 7 day;
このクエリを実行すると、次の結果が得られます。
+----+---------------------+ | Id | AdmissionDate | +----+---------------------+ | 3 | 2019-08-16 00:00:00 | +----+---------------------+ 1 row in set (0.04 sec)
解説のポイント
現在日付が「2019-08-23」であるため、その7日前である「2019-08-16」に該当するレコード(Id: 3)だけが抽出されました。ポイントは以下の2点です。
CURDATE()で現在の日付を取得し、- INTERVAL 7 DAYでちょうど7日前の日付を算出しています。date(AdmissionDate)でDateTime型の値を日付部分のみに変換することで、時刻の影響を受けずに正確に比較できます。
この方法を応用すれば、「過去30日間」や「先月のデータ」など、さまざまな期間指定の抽出にも対応できます。INTERVALの数値や単位(DAY、MONTH、YEARなど)を変更するだけで柔軟に使い分けられるので、ぜひ活用してみてください。
-
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でDATETIME型の日時に日数を追加する方法
MySQLでは、DATE_ADD()関数を使うことで、DATETIME型の値に指定した日数を簡単に追加できます。この記事では、実際にテーブルを作成し、日時フィールドに日数を加算するまでの手順を具体例とともに解説します。 1. テーブルの作成 まず、DATETIME型のカラムを持つテーブルを作成します。 mysql> create table DemoTable1871 ( ArrivalDate datetime ); Query OK, 0