我的表格列中有时间戳值。我需要保留上周的所有数据并删除表格中的其余数据(这不属于过去7天)。我该怎么做? / p>
我尝试的查询如下所示。
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
我桌子的结构:
答案 0 :(得分:3)
由于您正在将时间戳转换为varchars(使用date_format
),因此它们将比较字典,这不是您想要的行为。只需删除格式:
DELETE
FROM EmailMainTable
WHERE `timestamp` > DATE_SUB(NOW(), INTERVAL 8 DAY);
答案 1 :(得分:2)
最后,我找到了自己问题的答案。 这个答案对我有用。
DELETE
FROM EmailMainTable
WHERE FROM_UNIXTIME(timestamp/1000,"%Y-%m-%d") < DATE_SUB(NOW(), INTERVAL 8 DAY);