在where子句中添加unix时间戳的天数?

时间:2018-01-23 09:50:50

标签: mysql

我需要删除活动列为false的表中的所有条目,以及从当前日期开始的过期日期为30天或更长时间。但是如何将30天添加到CLAUSE的时间戳?我试过这个但是得到了一个格式错误的SQL异常

DELETE * FROM share
         WHERE active = false
         AND (expire + 30) > UNIX_TIMESTAMP();

我无法让timestampadd工作。

2 个答案:

答案 0 :(得分:1)

 DELETE FROM share
 WHERE active = false
 AND from_unixtime(expire) + interval 30 day > curr_date();

或者因为unix时间以秒为单位:

 DELETE FROM share
 WHERE active = false
 AND expire + (30*86400) > UNIX_TIMESTAMP();

答案 1 :(得分:0)

因此,为了确保MySQL实际上可以使用索引,你应该这样做:

DELETE FROM share WHERE active = false AND expire <= UNIX_TIMESTAMP() - 30 * 24 * 3600;