2010-05-08 11 views
11

Encontré exactamente la misma pregunta here.¿Quitar filas de la tabla de MySQL donde la marca de tiempo tiene más de un día?

Pero no funciona para mí. Lo he modificado un poco, lo he manipulado y no puedo resolverlo. Estoy tratando de eliminar filas que tienen más de un día. Aquí está mi código:

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

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

    echo 'Logs older than one day removed.';  

    } 

Bastante simple pregunta, supongo, pero me está fastidiando muchísimo. Apreciaría cualquier ayuda.

En caso de que haga una diferencia, la columna es del tipo TIMESTAMP.

EDIT: Aparentemente soy un idiota. La pregunta a la que te he vinculado está relacionada con SQLite3. Entonces, ahora mi pregunta es, ¿cómo puedo hacer esto en MySQL?

Respuesta

24

puede restar un intervalo:

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

Eso lo hizo. Muchas gracias – Rob

+0

Corto y dulce, funcionó muy bien para mí también! Gracias! –

8

Esa respuesta fue IIRC para SQLite3. Está utilizando MySQL que no admite esta sintaxis.

que desea utilizar DATE_ADD() función (ejemplo de abajo no probado, pero debería funcionar):

DELETE FROM logs WHERE time < TIMESTAMPADD(DAY,-1,NOW()); 
+0

Bueno, eso explicaría el problema. Gracias. – Rob

0

En mi caso, sólo el

timestampadd

en dirección positiva trabajo s cuando se ejecuta a través de un asc calendario de la fecha ordenada:

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

En dirección negativa (-1), la marca de tiempo se remonta a la primera entrada. También traté de no usar CodeIgniter, pero la misma consecuencia.

Resumiendo, +1 como parámetro para obras TIMESTAMPADD, -1 obras para la entrada de la segunda más baja (luego saltar de nuevo a la primera. Pero fracasa cuando me paso más lejos de la primera fecha.

+0

La vida de programación puede ser simple, olvidé la desc en el orden para hacer que la dirección negativa funcione, ahora va – Timo

Cuestiones relacionadas