MySQL从表中删除数据

时间:2014-10-13 09:37:21

标签: java mysql timestamp bigint

我的表格列中有时间戳值。我需要保留上周的所有数据并删除表格中的其余数据(这不属于过去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

我桌子的结构: enter image description here

2 个答案:

答案 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);