MySQLでタイムスタンプが5分より古いレコードを削除する方法
MySQLでは、DELETE文とNOW()関数、INTERVAL演算子を組み合わせることで、指定した時間より古いレコードを簡単に削除できます。この記事では、タイムスタンプが現在時刻から5分より古いレコードを削除する具体的な手順を、サンプルコード付きで解説します。
1. サンプルテーブルの作成
まず、動作を確認するためのテーブルを作成します。ここではDATETIME型のカラムを持つシンプルなテーブルを用意しましょう。
mysql> create table DemoTable1851
(
DueDate datetime
);
Query OK, 0 rows affected (0.00 sec)
2. テストデータの挿入
INSERT文を使って、いくつかのレコードをテーブルに挿入します。
mysql> insert into DemoTable1851 values('2019-12-03 21:30:35');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1851 values('2019-12-03 21:45:00');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1851 values('2019-12-03 21:34:00');
Query OK, 1 row affected (0.00 sec)
3. 登録済みレコードの確認
SELECT文ですべてのレコードを表示してみます。
mysql> select * from DemoTable1851;
実行結果は以下の通りです。
+---------------------+ | DueDate | +---------------------+ | 2019-12-03 21:30:35 | | 2019-12-03 21:45:00 | | 2019-12-03 21:34:00 | +---------------------+ 3 rows in set (0.00 sec)
4. 現在の日時を確認する
NOW()関数を使うと、現在の日時を取得できます。
mysql> select now(); +---------------------+ | now() | +---------------------+ | 2019-12-03 21:38:46 | +---------------------+ 1 row in set (0.00 sec)
5. 5分より古いレコードを削除するクエリ
それが本題となる、タイムスタンプが5分より古いレコードを削除するクエリです。「NOW() - INTERVAL 5 MINUTE」で現在時刻の5分前を求め、その時刻より古い(小さい)DueDateを持つレコードだけを削除します。
mysql> delete from DemoTable1851 where DueDate < (NOW() - INTERVAL 5 MINUTE); Query OK, 2 rows affected (0.00 sec)
6. 削除後のレコードを確認する
もう一度SELECT文を実行して、削除結果を確認しましょう。
mysql> select * from DemoTable1851;
実行結果は以下の通りです。
+---------------------+ | DueDate | +---------------------+ | 2019-12-03 21:45:00 | +---------------------+ 1 row in set (0.00 sec)
クエリのポイントと応用
重要なのは「NOW() - INTERVAL 5 MINUTE」という部分です。NOW()が現在の日時を返し、INTERVAL構文によってその5分前の時刻を計算しています。WHERE句により、その時刻よりも前の日時を持つレコードのみが削除対象となります。
INTERVALの単位は柔軟に変更できます。たとえば「INTERVAL 1 HOUR」なら1時間前、「INTERVAL 1 DAY」なら1日前という条件に置き換えられます。さらに、MySQLのイベントスケジューラやOSのcronなどと組み合わせれば、古いデータを定期的に自動クリーンアップする仕組みも簡単に構築できます。ログやセッション情報など、期限切れデータの削除が必要な場面でぜひ活用してください。
-
MySQLで1日より古いタイムスタンプの行を取得する方法
MySQLで1日より古いタイムスタンプの行を取得する方法MySQLで、1日より古いタイムスタンプで更新された行を取得したい場合は、from_unixtime()関数とnow()関数を組み合わせて使用します。from_unixtime()はUNIXタイムスタンプを日時形式に変換する関数で、now()は現在の日時を返します。これらを組み合わせることで、指定した期間より古いレコードを簡単に抽出できます。それでは、実際にテーブルを作成して動作を確認していきましょう。テーブルの作成まず、サンプルデータを格納するテーブルを作成します。mysql> create table demo75 -&g
-
Node.jsでMySQLのレコードを削除する方法を解説
はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes