从时间戳超过一天的MySQL表中删除行?

Rob*_*Rob 11 php mysql timestamp date

我在这里找到了完全相同的问题.

但这对我不起作用.我修改了一下,操纵它,我无法弄明白.我正在尝试删除超过一天的行.这是我的代码:

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

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

    echo 'Logs older than one day removed.';    

    }
Run Code Online (Sandbox Code Playgroud)

我想这是一个相当简单的问题,但它却让我不知所措.我将不胜感激任何帮助.

如果它有所不同,该列是一种TIMESTAMP类型.

编辑:显然我是个白痴.我链接到你的问题与SQLite3有关.所以现在我的问题是,我怎样才能在MySQL中做到这一点?

Mar*_*ers 26

您可以减去一个间隔:

DELETE FROM logs WHERE time < now() - interval 1 day
Run Code Online (Sandbox Code Playgroud)


DVK*_*DVK 9

答案是SQLite3的IIRC.您正在使用不支持此语法的MySQL.

您想使用DATE_ADD()函数(下面的示例未经测试但应该有效):

DELETE FROM logs WHERE time < TIMESTAMPADD(DAY,-1,NOW());
Run Code Online (Sandbox Code Playgroud)