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

时间:2013-02-17 17:20:00

标签: 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_query('DELETE FROM onreport WHERE duration ==$f_today');
    //print('$f_today')
    ?>

我意识到这可能不是最有效的方法,即使它确实有效,但我变得绝望!我知道代码正在运行,因为包含注释掉的print语句以与表格格式相同的格式打印今天的正确日期。 持续时间列的类型为“日期”,在表格中显示为yyyy-mm-dd

1 个答案:

答案 0 :(得分:1)

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

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

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

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