如何删除字段大于24小时的行

时间:2014-08-01 07:27:47

标签: java mysql database multithreading prepared-statement

我有一个包含2个用户名和日期的表 - 我需要一种处理表的方法,以便当存储的日期大于24小时/ 1天时 - 然后将其删除。

我在想我的java应用程序可能有一个可以轮询并执行此操作的线程,或者 - 是否有可以在数据库端制作的解决方案?例如,存储过程?

由于

3 个答案:

答案 0 :(得分:3)

您可以使用Mysql Event Scheduler定期在数据库端执行操作。

您也可以使用ScheduledThreadPoolExecutor

在Java中以编程方式执行此操作
ScheduledExecutorService ses = Executors.newSingleThreadScheduledExecutor();
// execute every 15 seconds
ses.scheduleAtFixedRate(new Runnable() {
    @Override
    public void run() {
        // execute query to delete the proper data
    }
}, 0, 15, TimeUnit.SECONDS); 

答案 1 :(得分:1)

要在MySql中定期运行内容,请尝试Event Scheduler

来自MySql docs的示例事件定义:

CREATE EVENT e_hourly
    ON SCHEDULE
      EVERY 1 HOUR
    COMMENT 'Clears out sessions table each hour.'
    DO
      DELETE FROM site_activity.sessions;

答案 2 :(得分:0)

您可以执行以下操作:

db.query("DELETE FROM yourtable WHERE TIMESTAMPDIFF(HOUR, NOW(), yourdate) > 24");

每天运行一次。