mysql时间戳选择旧记录

时间:2012-03-26 17:52:29

标签: php mysql

我有一个列,我保存记录的时间戳,我想从我的数据库删除X天旧记录,但我不想删除默认值为“0000-00-00 00:00:00”的记录< / p>

我尝试了这个查询,首先选择记录,但它也选择了几乎所有记录和默认值的记录。

SELECT * FROM `file` WHERE 'Accestime' != '0000-00-00 00:00:00' AND 'Accestime' < TIMESTAMPADD(DAY,-60,NOW())

请有人指导我上面做错了吗?

感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

在示例查询中,您使用文字而不是列作为日期字段。

澄清一下,'Accestime'与'Accestime``不同。注意一个使用反引号,另一个使用单引号,所以基本上你使用文字字符串并将它与日期数据进行比较。此外,我认为您的意思是选择60天前小于的日期,不大于。尝试更像这样的东西:

SELECT * FROM `file` WHERE `Accestime` != '0000-00-00 00:00:00' AND `Accestime` < TIMESTAMPADD(DAY,-60,NOW())

答案 1 :(得分:2)

为避免混淆蜱和单引号 - 停止使用蜱虫! 我在职业生涯中做了很多sql,我从来不需要使用刻度线。所以我非常怀疑任何sql server目前都需要滴答声。

因为你正在使用刻度线而遇到问题。事实上,为什么不使用双引号并忽略滴答声和单引号的错误可能情况。

我知道这不是必要的,但是好习惯可以节省时间和头痛。

DELETE * FROM file WHERE Accestime != "0000-00-00 00:00:00" 
AND Accestime < TIMESTAMPADD(DAY,-60,NOW())