检查日期是否过去

时间:2018-10-25 13:45:52

标签: php mysql date

我正在从MySQL表中获取值,并且我的日期看起来像:DD.MM

现在,我要检查此日期是否过去。我用if($ende < date("d.m"));进行了尝试,但是它删除了 23.10 中的 01.11 之类的值。

我需要删除过去的条目。

我的代码如下:

if($ende < date("d.m")) {
    $sqls = "DELETE FROM hausaufgaben WHERE Ende='$ende';";
    if(!mysqli_query($conn, $sqls)){
        echo "<p>Es gab keine älteren Hausaufgaben</p>";
    }
}

2 个答案:

答案 0 :(得分:1)

将日期分为两部分,然后分别比较日期和月份

$ende = "01.11";

$ende_split = explode( '.', $ende );
$ende_tag   = $ende_split[0];
$ende_monat = $ende_split[1];

if( ($ende_tag < date('d')) && ($ende_monat <= date('m')) ){
    $sqls = "DELETE FROM hausaufgaben WHERE Ende='$ende';";

    if(!mysqli_query($conn, $sqls)){
        echo "<p>Es gab keine älteren Hausaufgaben</p>";
    }
}

monat使用<=是因为月份可以相同,但日期可以是过去。

答案 1 :(得分:1)

您将需要使用Str_To_Date()函数,将您的 DD.MM 格式字符串转换为MySQL Date format YYYY-MM-DD ) 。

自从您mentioned以来,将仅提供当年的数据;我可以放心地假设年份是2018年(可以使用YEAR(CURDATE())来通用。

请尝试以下查询:

DELETE FROM hausaufgaben 
WHERE STR_TO_DATE(CONCAT(Ende, '.', YEAR(CURDATE())), 
                  '%d.%m.%Y') < CURDATE()

其他详细信息:

  • %d每月的某天,以数字值(01到31)
  • %m月名称为数字值(00到12)
  • %Y年,为4位数字