删除所有超过5天的行

问题描述:

我想删除表中超过5天的所有行。删除所有超过5天的行

我的表有一个createdOn类型的日期列你可以建议我查询。

我米使用MySQL数据库

现在我写folloiwng查询

SELECT * from `user_games` where created_on >= DATE_SUB(created_on, INTERVAL 5 DAY) 

,看看哪些五天老user_games

但总是即时得到相同的结果,即使我出马查询Invterval 1天或间隔5天

enter image description here

而今天CURDATE是2011年5月2日

试试这个,

delete from mytable where datediff(now(), mytable.date) > 5 

这将是适当的删除方法。

+0

似乎更适合工作 – Abhi 2011-05-02 05:07:59

+1

运行多比Harry Joy的回答更快,不知道为什么。 – iautomation 2016-12-11 22:39:49

+0

@iautomation我猜这是更有效的,因为datediff()只考虑日期,而DATE_SUB()也考虑时间。 – 2017-06-17 10:13:35

你想这样做:

delete from myTable 
where createdOn < CurDate() - 5 
+2

+1添加是符合标准的,更容易比'DATE_SUB'读恕我直言:) – Andomar 2011-05-02 05:04:45

+0

这样可不行我刚才试了一下,currdate-5会返回一些整数,然后轮流删除每两天的旧行,这会导致问题。 – Abhi 2011-05-02 05:05:28

+1

绝对......但这只是我的看法:)我只是另一个编码器... – 2011-05-02 05:06:05

使用date_sub功能,如:

delete from `myTable` where createdOn<DATE_SUB(curdate(), INTERVAL 5 DAY); 
+1

'SELECT *'应该是'DELETE' – bdares 2011-05-02 04:56:14

+1

@bdares:是的我知道我只是在更新它。 – 2011-05-02 04:56:45

+0

我没有得到想要的结果,我试图通过使用select而不是删除来查看数据,只是为了查看所需的行是否被查询挑选出来,但我没有得到正确的结果 – Abhi 2011-05-02 05:04:27

DELETE FROM table_name的WHERE time <(NOW() - 间隔5天)