检查日期是否在过去

gk7wooem  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(223)

我正在从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>";
    }
}
xhv8bpkk

xhv8bpkk1#

把日期分成两部分,然后分别比较日期和月份

$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>";
    }
}

莫纳特使用 <= 因为一个月可以是一样的,但是一天可以是过去的。

yqkkidmi

yqkkidmi2#

你需要使用 Str_To_Date() 函数,将dd.mm格式字符串转换为mysql日期格式(yyyy-mm-dd)。
因为你提到只有当年的数据;我可以放心地假设这一年是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位数字值表示的年份

相关问题