Tengo que actualizar una aplicación de Android que tiene una base de datos SQLite. En la nueva versión, decidimos usar INTEGER (el número de segundos desde 1970-01-01 00:00:00 UTC
) Almacenar java.util.Date
Objetos en lugar de texto (cadenas ISO8601): YYYY-MM-DD HH:MM:SS.SSS
)
¿Es posible cambiar el tipo de columna? ¿O debería agregar una nueva columna y luego convertir los objetos de fecha en largos y luego eliminar la columna antigua y al final cambiar el nombre de columna nueva? O ¿Hay una manera mejor / estándar de hacer esto?
Respuestas
0 para la respuesta № 1Puede ser que esto te ayude ...
CREAR TABLA SI NO EXISTE TEMP_TABLE (ID entero clave autoincremento, col2change entero no nulo, ...)
INSERT INTO TEMP_TABLE SELECT * FROM EXISTING_TABLE
DROP TABLE EXISTING_TABLE
ALTER TABLE TEMP_TABLE RENAME TO EXISTING_TABLE
0 para la respuesta № 2
yo usaría SQLiteOpenHelper # onUpgrade (base de datos SQLiteDatabase, int oldVersion, int newVersion) y como has dicho:
agregue una nueva columna y luego convierta los objetos de fecha en largos y luego elimine la columna antigua y al final cambiar el nombre de columna nueva
Por otro lado, puede poner int en la columna con la afiliación de TEXT, ya que a sqlite no le importan los tipos mayoria de los casos.
0 para la respuesta № 3
En realidad, como @delor dijo que SQLite es casi inagotable, vea http://www.sqlite.org/datatypes.html
Puedes actualizar tu tabla con solo una consulta:
update t set d = strftime("%s", d)