我需要删除活动列为false的表中的所有条目,以及从当前日期开始的过期日期为30天或更长时间。但是如何将30天添加到CLAUSE的时间戳?我试过这个但是得到了一个格式错误的SQL异常
DELETE * FROM share
WHERE active = false
AND (expire + 30) > UNIX_TIMESTAMP();
我无法让timestampadd
工作。
答案 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;