2012-08-02 10 views
12

Quiero eliminar todas las filas de la tabla MYTABLE que sean anteriores a x días. Columna SAVE_DATE Long es la hora en que se insertó la fila en la tabla.eliminar filas sqllite de android anteriores a x días

yo probamos este pero parece ser que elimina todos mis filas:

long daysInMiliSec = new Date().getTime() - X 
      * (24L * 60L * 60L * 1000L); 
return db.delete(MYTABLE , SAVE_DATE 
      " <= ?", new String[] { "" + daysInMiliSec } 

lo que está mal?

Gracias por ayudarme.

Respuesta

26

continuación de la consulta se elimine los datos de más de 2 días:

String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; 
db.execSQL(sql); 
10

Ya que es el primer golpe en Google un poco más de explicación para los principiantes:
Usted no necesita las funciones de hora/fecha del programa principal se use para acceder al DB sqlite pero use las funciones de fecha sqlite directamente.

crear la tabla con la entrada de fila para la edad por ejemplo:

CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER) 

se escribe en él con

INSERT INTO test (text, age) VALUES ("bla", datetime('now')) 

Aquí he utilizado 'fecha y hora', porque esto también le permitirá búsqueda posterior de horas/minutos/segundos. Si no necesitas esa 'fecha' ('ahora') 'es suficiente.

Aquí es una explicación de la función de la fecha: https://www.sqlite.org/lang_datefunc.html

Para seleccionar todo mayor que, por ejemplo, 5 minutos:

SELECT * FROM test WHERE age <= datetime('now', '-5 minutes') 

Usted puede ver más de esas posibilidades en el sitio web más arriba en el párrafo " Modificadores '.

Cuestiones relacionadas