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

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などと組み合わせれば、古いデータを定期的に自動クリーンアップする仕組みも簡単に構築できます。ログやセッション情報など、期限切れデータの削除が必要な場面でぜひ活用してください。

  1. MySQLで1日より古いタイムスタンプの行を取得する方法

    MySQLで1日より古いタイムスタンプの行を取得する方法MySQLで、1日より古いタイムスタンプで更新された行を取得したい場合は、from_unixtime()関数とnow()関数を組み合わせて使用します。from_unixtime()はUNIXタイムスタンプを日時形式に変換する関数で、now()は現在の日時を返します。これらを組み合わせることで、指定した期間より古いレコードを簡単に抽出できます。それでは、実際にテーブルを作成して動作を確認していきましょう。テーブルの作成まず、サンプルデータを格納するテーブルを作成します。mysql> create table demo75 -&g

  2. Node.jsでMySQLのレコードを削除する方法を解説

    はじめにデータベースへのレコード挿入後、不要になったデータを削除する場面も必ず出てきます。MySQLでは、テーブル内のレコードを識別子(条件)に基づいて削除することが可能で、その際には「DELETE FROM」ステートメントを使用します。Node.jsからMySQLのレコードを削除する方法は、主に以下の2通りがあります。静的な削除 – あらかじめ決められた条件値を指定して削除する方法です。動的な削除 – 削除前にユーザーから入力を受け取り、その値に基づいて削除を実行する方法です。事前準備作業を始める前に、以下のコマンドがすでに実行済みであることを確認してください。mkdir mysql-tes