Eliminar filas sqllite de android de más de x días
Quiero eliminar todas las filas de la tabla MYTABLE que tengan más de x días. Columna SAVE_DATE Long es la hora en que se insertó la fila en la tabla.
He intentado esto pero aparentemente elimina todas mis filas:
- Creación de tablas en la base de datos sqlite en android
- Android sqlite delete no elimina realmente las filas
- (1) cerca de "AUTO_INCREMENT": error de sintaxis al alterar la tabla
- Cómo almacenar (imagen de mapa de bits) y recuperar la imagen de la base de datos sqlite en android?
- Consulta SQLite de Android y uso del cursor para tratar varias filas
long daysInMiliSec = new Date().getTime() - X * (24L * 60L * 60L * 1000L); return db.delete(MYTABLE , SAVE_DATE " <= ?", new String[] { "" + daysInMiliSec }
¿Qué está mal?
Gracias por ayudarme.
- Obtención del siguiente valor AUTO_INCREMENT de una base de datos SQLite
- Android: SQLite, cursor.moveToNext () siempre devuelve false
- Se abren varias bases de datos de Android
- Cómo debo abrir y cerrar mi base de datos correctamente
- Android SQLite issue - table ... no tiene una columna llamada
- Un comportamiento extraño para reguelr sqlite operación en android
- Mantener los datos SQLite después de la actualización
- Conexiones de la base de datos Android y cursores oh my
Debajo de la consulta se borrarán datos anteriores a 2 días:
String sql = "DELETE FROM myTable WHERE Save_Date <= date('now','-2 day')"; db.execSQL(sql);
Ya que es el primer éxito en google más explicación para los principiantes:
No necesita las funciones de hora / fecha del programa principal que utiliza para acceder al DB sqlite, sino que utiliza las funciones de fecha sqlite directamente.
Crea la tabla con la entrada de fila para la edad con, por ejemplo:
CREATE TABLE IF NOT EXISTS test (id INTEGER PRIMARY KEY, text TEXT, age INTEGER)
Tu escribes con
INSERT INTO test (text, age) VALUES ("bla", datetime('now'))
Aquí he usado 'datetime' porque esto también le permitirá buscar más tarde horas / minutos / segundos. Si usted no necesita esa 'fecha' ('ahora') 'es suficiente.
Aquí hay una explicación para la función de fecha: https://www.sqlite.org/lang_datefunc.html
Para seleccionar todo más antiguo 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 arriba en el párrafo ' Modificadores '.
- Elemento de lista con el botón que ya no se puede hacer clic
- Traer la aplicación al frente después de que el usuario haga clic en el botón de inicio