Php 超过日期时从SQL表中删除记录

Php 超过日期时从SQL表中删除记录,php,sql,Php,Sql,我目前正在开发一个系统来管理学校报告中的学生,但我遇到了一个绊脚石。在我的SQL表(‘onreport’)中有一个名为‘duration’的字段,我希望删除存储在此行中的任何记录,即报告已过期 <?php include('connect.php'); //connect to the database $today = new DateTime("now"); $f_today=$today->format('Y-m-d'); mysql_q

我目前正在开发一个系统来管理学校报告中的学生,但我遇到了一个绊脚石。在我的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

似乎不是比较日期,而是比较字符串,这通常被认为是一种不好的做法。但由于您没有发布数据库模式,所以很难说

但是,如果要删除今天之前发布的所有报告,可以使用纯SQL查询,假设字段持续时间为日期类型:

DELETE FROM onreport WHERE TIMESTAMPDIFF(DAY,CURDATE(),duration)>0

此查询比较两个日期:CURDATE(),它是当前服务器时间与duration的值,并返回一个以天数表示的结果。如果该值大于零,则该行将被删除。

是否有任何错误?是否可以发布表结构,或者至少告诉我们
duration
的SQL类型是什么?并且没有显示错误。是否可以尝试在SQL查询分析器中执行从代码中获得的相同SQL?它似乎没有任何出色的表现!这只是个骗局,我意识到这是渎职行为,我只是不知道怎么做。非常感谢:)