views:

324

answers:

2

I found the exact same question here.

But it isn't working for me. I've modified it a bit, manipulated it, and I can't figure it out. I'm trying to remove rows that are over a day old. Here is my code:

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

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

    echo 'Logs older than one day removed.';    

    }

Fairly simple question I suppose, but its bugging the hell out of me. I would appreciate any help.

In case it makes a difference, the column is a TIMESTAMP type.

EDIT: Apparently I'm an idiot. The question I linked you to relates to SQLite3. So now my question is, how can I do this in MySQL?

+1  A: 

That answer was IIRC for SQLite3. You're using MySQL which does not support this syntax.

You want to use DATE_ADD() function (example below not tested but should work):

DELETE FROM logs WHERE time < TIMESTAMPADD(DAY,-1,NOW());
DVK
Well that would explain the problem. Thank you.
Rob
+6  A: 

You can subtract an interval:

DELETE FROM logs WHERE time < now() - interval 1 day
Mark Byers
That did it. Thanks a lot
Rob