タイムスタンプが現在の日付/時刻または現在のタイムスタンプよりも古いデータベース内のテーブルからすべての行を削除できるクエリを探しています。
ここで緊急に助けていただければ幸いです。
これが私が使用しているクエリですが、うまくいかないと思ったので:
delete from events where timestamp<CURRENT_TIMESTAMP{);
タイムスタンプが現在の日付/時刻または現在のタイムスタンプよりも古いデータベース内のテーブルからすべての行を削除できるクエリを探しています。
ここで緊急に助けていただければ幸いです。
これが私が使用しているクエリですが、うまくいかないと思ったので:
delete from events where timestamp<CURRENT_TIMESTAMP{);
うーん...これはばかげているように思えるかもしれませんが、クエリが処理されるときに 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 のマニュアルはどこにありますか? :)
delete from events where timestamp < NOW()
十分なはずです。
DELETE FROM events WHERE timestamp < UNIX_TIMESTAMP(NOW())
またはそれが標準の日時の場合
DELETE FROM events WHERE timestamp < NOW()
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);
}
DELETE FROM table WHERE date < '2011-09-21 08:21:22';