0

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

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

4

1 回答 1

1

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

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

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

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

于 2013-02-17T17:33:37.270 回答