$datediff = "DELETE FROM table1 * WHERE date = DATEADD(day,-1,CURDATE())";
$link->query($datediff);
我正在尝试使用DATEADD删除数据库中从CURDATE 开始一天的表中的所有记录。但是,在使用上述代码时,我没有成功删除这些记录。使用CURRENT_TIMESTAMP将日期放入我的数据库中。
我试过了:
- 用'dd'代替'day'
- 在“日”字周围输入单引号
- 使用CURDATE()的替代方法,例如CURRENT_TIMESTAMP和GETDATE()
有没有人有任何关于尝试做什么的建议,或者看到我做错了什么来阻止它工作?提前谢谢。
答案 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,以便仅对年,月,日组件进行比较。