Проверьте, если дата в прошлом - PullRequest
0 голосов
/ 25 октября 2018

Я получаю значения из таблицы MySQL, и моя дата выглядит так: DD.MM

Теперь я хочу проверить, была ли эта дата в прошлом.Я попробовал его с if($ende < date("d.m"));, но он удалил значения, такие как 01.11 в 23.10 .

Мне нужно удалить записи, которые были в прошлом.

Мой код выглядит так:

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 голосов
/ 25 октября 2018

Вам потребуется использовать функцию Str_To_Date(), чтобы преобразовать строку формата DD.MM в Формат даты MySQL ( ГГГГ-ММ-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-значное значение
0 голосов
/ 25 октября 2018

Разделите дату так, чтобы она была разделена на две части, затем сравните день и месяц отдельно

$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 использует <=, потому что месяц может быть тем же, но день может быть впрошлое.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...