/ / Cambiar el tipo de columna de TEXT a INTEGER para almacenar el objeto de fecha - android, sqlite

Cambie el tipo de columna de TEXT a INTEGER para almacenar el objeto de fecha - android, sqlite

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 № 1

Puede 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)