Удаление строк из таблицы MySQL, где метка времени за один день?

Я нашел тот же вопрос здесь.

но это не работает для меня. Я немного изменил его, манипулировал им, и я не могу понять это. Я пытаюсь удалить строки, которым больше суток. Вот мой код:

if (isset($_POST['prune'])) {

    $sql = "DELETE FROM logs WHERE time < date('now', '-1 days')";
    mysql_query($sql);

    echo 'Logs older than one day removed.';    

    }

довольно простой вопрос, я полагаю, но его прослушивание чертовски из меня. Я был бы признателен за любую помощь.

в случае, если это имеет значение, столбец TIMESTAMP тип.

EDIT: Очевидно, я идиот. Вопрос, с которым я связал вас, относится к SQLite3. Итак, теперь мой вопрос: как я могу это сделать в MySQL?

3 ответов


вы можете вычесть интервал:

DELETE FROM logs WHERE time < now() - interval 1 day

этот ответ был IIRC для SQLite3. Вы используете MySQL, который не поддерживает этот синтаксис.

вы хотите использовать DATE_ADD ()


в моем случае, только

timestampadd

в положительном направлении работает при запуске через АСЦ заказать календарную дату:

    if (urldecode ($aUrl['Select']) == '>')
        $this-> db-> where ('konzertdatum >', 'TIMESTAMPADD(DAY, 1, "'.  $id . '") ', false) ;
    else 
        $this-> db-> where ('konzertdatum < ', 'TIMESTAMPADD(DAY, -1, "'.  $id . '") ', false) ;

в отрицательном направлении (-1) метка времени возвращается к самой первой записи. Я также пытался не использовать CodeIgniter, но то же самое следствие.

подводя итоги +1 в качестве параметра для timestampadd работ, -1 работает для второго самого низкого входа (затем возвращается к первому. Однако он не Я делаю шаг в сторону от первого свидания.