sql删除超过30天的所有行

时间:2018-03-15 22:07:04

标签: mysql sql

关于如何删除超过30天的所有行有很多问题,但我找不到与我相同的任何内容,所以我可以修复它

我需要删除一些超过30天的邮件记录,带有日期的列名称为sentOn,该列中的行看起来像这样2018-01-12 12:25:00 如何格式化我的查询以删除包含超过30天的那些记录的表中的所有记录?

DELETE FROM messages WHERE sentOn < '2018-02-21 00:00:00';

这会有用吗?

编辑: 上面的查询工作,但非常非常缓慢的任何方式,使其更快?我试过now()但它给出了函数错误的错误

2 个答案:

答案 0 :(得分:4)

以下代码将删除超过30天的邮件记录

DELETE FROM messages WHERE sentOn < NOW() - INTERVAL 30 DAY;

MySQL中的NOW()方法用于随时间选择当前日期。 INTERVAL 30 DAY用于从当前日期减去30天。 完成上述查询后,您可以使用SELECT语句检查当前表。谢谢!

答案 1 :(得分:-2)

DELETE FROM messages WHERE sentOn > '2018-02-21 00:00:00';

您要删除大于&#39; 2018-02-21 00:00:00&#39;的邮件。您可以通过选择* FROM消息来检查逻辑是否正确WHERE sentOn&gt; &#39; 2018-02-21 00:00:00&#39;。