从MySQL表中删除数据

3

我在我的表中有一个时间戳数值的列。我需要保留过去一周的所有数据并删除表中其余不属于最近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类型

我的表结构如下: enter image description here

2个回答

3

由于您正在将时间戳转换为varchars(使用date_format),因此它们将进行字典比较,这不是您想要的行为。只需删除格式即可:

DELETE
FROM   EmailMainTable 
WHERE  `timestamp` > DATE_SUB(NOW(), INTERVAL 8 DAY);

1
当我使用这个时,我得到了一个空集合。 - user4125170

2

最终我找到了自己问题的答案。 这是对我有效的答案。

DELETE 
FROM EmailMainTable
WHERE FROM_UNIXTIME(timestamp/1000,"%Y-%m-%d") < DATE_SUB(NOW(), INTERVAL 8 DAY);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接