How to delete a MySQL record after a certain time

前端 未结 3 1721
渐次进展
渐次进展 2020-11-27 03:42

I want to delete some messages from my MySQL database after 7 days.

My message table rows have this format: id | message | date

The date is a timestamp in th

相关标签:
3条回答
  • 2020-11-27 04:06

    You can try using this condition:

    WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY)
    

    So that the whole SQL script looks like this:

    CREATE EVENT delete_event
    ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 DAY
    ON COMPLETION PRESERVE
    
    DO BEGIN
          DELETE messages WHERE date < DATE_SUB(NOW(), INTERVAL 7 DAY);
    END;
    

    However, on your place I would solve the given problem with a simple cron script. The reasons to do this is simple: it's easier to maintain the code, no ugly SQL workarounds, integrates smoothly with your system.

    0 讨论(0)
  • 2020-11-27 04:08

    This should do the trick.

    DELETE FROM messages WHERE date < (CURDATE() - INTERVAL 7 DAY);
    
    0 讨论(0)
  • 2020-11-27 04:16

    For those out there who are on a shared hosting, like 1and1's, and can't create events, an alternative is to use webcron

    You just need to tell webcron the url of the php script you'd like to be run, and they'll trigger it for you at the intervals you want

    0 讨论(0)
提交回复
热议问题