我在我的表的一列中有时间戳值.我需要保留上周的所有数据并删除表中的其余数据(这不属于最近7天).我该怎么办?
我试过的查询如下.
DELETE * FROM EmailMainTable WHERE DATE_FORMAT(timestamp, '%Y-%m-%d %H:%i:%s') >
DATE_SUB(DATE_FORMAT(NOW(), '%Y-%m-%d %H:%i:%s'), INTERVAL 8 DAY);
注意:我的归档名称是时间戳,我将其转换为bigint
我桌子的结构:
解决方法:
由于您将时间戳转换为varchars(使用date_format),因此将按字典顺序进行比较,这不是您想要的行为.只需删除格式:
DELETE
FROM EmailMainTable
WHERE `timestamp` > DATE_SUB(NOW(), INTERVAL 8 DAY);