我目前正在开发一个系统来管理学校报告中的学生,但我遇到了绊脚石。在我的SQL表('onreport')中有一个名为'duration'的字段我希望删除存储在此行中的存储日期的任何记录,即报告已过期。
<?php
include('connect.php'); //connect to the database
$today = new DateTime("now");
$f_today=$today->format('Y-m-d');
mysql_query('DELETE FROM onreport WHERE duration ==$f_today');
//print('$f_today')
?>
我意识到这可能不是最有效的方法,即使它确实有效,但我变得绝望!我知道代码正在运行,因为包含注释掉的print语句以与表格格式相同的格式打印今天的正确日期。 持续时间列的类型为“日期”,在表格中显示为yyyy-mm-dd
答案 0 :(得分:1)
似乎不是比较日期,而是比较字符串,这通常被认为是一种不好的做法。但由于您没有发布数据库架构,因此很难说。
但是,如果您要删除今天之前发布的每个报告,则可以使用纯SQL查询,假设字段持续时间为DATE类型:
DELETE FROM onreport WHERE TIMESTAMPDIFF(DAY,CURDATE(),duration)>0
此查询比较两个日期:CURDATE(),它是当前服务器时间,其值为duration,并返回天数结果。如果此值大于零,则删除该行。