SQL使用DATEADD删除数据库中的记录时遇到问题

时间:2014-03-15 09:20:52

标签: mysql sql datetime

$datediff = "DELETE FROM table1 * WHERE date = DATEADD(day,-1,CURDATE())";
$link->query($datediff);

我正在尝试使用DATEADD删除数据库中从CURDATE 开始一天的表中的所有记录。但是,在使用上述代码时,我没有成功删除这些记录。使用CURRENT_TIMESTAMP将日期放入我的数据库中。

我试过了:
- 用'dd'代替'day' - 在“日”字周围输入单引号 - 使用CURDATE()的替代方法,例如CURRENT_TIMESTAMP和GETDATE()

有没有人有任何关于尝试做什么的建议,或者看到我做错了什么来阻止它工作?提前谢谢。

2 个答案:

答案 0 :(得分:2)

使用间隔

DELETE 
  FROM table1 
 WHERE date = (current_timestamp() - INTERVAL 1 day);

第二个选项是DATESUB

DELETE 
  FROM table1 
 WHERE date = DATESUB(current_timestamp(), INTERVAL 1 day);

此外,不需要*

P.S。这个答案适用于MySQL

答案 1 :(得分:0)

您没有报告名为DATE的列类型。如果此列是TIMESTAMP,那么您的查询将无法工作,因为之前一天的小时,分​​钟,秒组件将与记录的组件不匹配。在这种情况下,您将CAST()或CONVERT()列和比较值都放入DATE,以便仅对年,月,日组件进行比较。