7

タイムスタンプが現在の日付/時刻または現在のタイムスタンプよりも古いデータベース内のテーブルからすべての行を削除できるクエリを探しています。

ここで緊急に助けていただければ幸いです。

これが私が使用しているクエリですが、うまくいかないと思ったので:

delete from events where timestamp<CURRENT_TIMESTAMP{);
4

5 に答える 5

28

うーん...これはばかげているように思えるかもしれませんが、クエリが処理されるときに Now() が計算されるため、テーブル内のすべてのレコードは Now() よりも古いものになります。別のレコードよりも古いレコードを削除する場合は、Now() を使用するのではなく、残りのレコードと比較するレコードのタイムスタンプを使用します。または、特定の時点よりも古いレコードを削除する場合は、比較に使用するタイムスタンプを計算する必要があります。たとえば、10 分以上前のレコードを削除するには、次のように使用できます。

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 10 MINUTE)

または、1 日以上経過したレコードを削除するには:

DELETE FROM events WHERE timestamp < (NOW() - INTERVAL 1 DAY)

特定の時点 (例: 2012 年 10 月 12 日午後 4 時 15 分 00 秒 GMT) については、それを行う方法はありますが、今のところ構文がわかりません。MySQL のマニュアルはどこにありますか? :)

于 2012-11-19T09:18:54.457 に答える
10
delete from events where timestamp < NOW()

十分なはずです。

于 2012-04-17T19:18:29.043 に答える
2
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())

またはそれが標準の日時の場合

DELETE FROM events WHERE timestamp < NOW()
于 2012-04-17T19:19:11.543 に答える
1

Hibernate (hql) 7 日より古いレコードを削除する

よくわかりませんが、これを試すことができます:

    String hqlQuery = "from PasswordHistory pwh "
          + "where pwh.created_date < datediff(curdate(), INTERVAL 7 DAY)";

            List<Long> userList = (List<Long>)find(hqlQuery);
    deleteAll(userList );// from baseDao

public void deleteAll(Collection list) {
        getHibernateTemplate().deleteAll(list);
    }
于 2014-04-01T20:05:36.387 に答える
-3
DELETE FROM table WHERE date < '2011-09-21 08:21:22';
于 2013-06-01T13:13:12.120 に答える