/ / Alterar o tipo de coluna de TEXT para INTEGER para armazenar o objeto de data - android, sqlite

Alterar o tipo de coluna de TEXT para INTEGER para armazenar o objeto de data - android, sqlite

Eu tenho que atualizar um aplicativo Android que tenha um banco de dados SQLite. Na nova versão, decidimos usar INTEGER (o número de segundos desde 1970-01-01 00:00:00 UTC) armazenar java.util.Date objetos em vez de texto (seqüências de caracteres ISO8601: YYYY-MM-DD HH:MM:SS.SSS).

É possível alterar o tipo de coluna? Ou devo adicionar uma nova coluna e, em seguida, converter objetos de data em longo e, em seguida, excluir a coluna antiga e no final renomear nova coluna? Ou existe uma maneira melhor / padrão de fazer isso?

Respostas:

0 para resposta № 1

Pode ser que isso ajude você ...

CRIAR TABELA SE NÃO EXISTIR TEMP_TABLE (ID inteiro de autoincremento de chave primária, inteiro de col2change não nulo, ...)

INSERT INTO TEMP_TABLE SELECT * FROM EXISTING_TABLE

DROP TABLE EXISTING_TABLE

ALTER TABLE TEMP_TABLE RENAME TO EXISTING_TABLE

0 para resposta № 2

eu usaria SQLiteOpenHelper # onUpgrade (db SQLiteDatabase, int oldVersion, int newVersion) e como você disse:

adicionar uma nova coluna e, em seguida, converter objetos de data em longo e, em seguida, excluir a coluna antiga e no final renomear nova coluna

Por outro lado, você pode simplesmente colocar int na coluna com afiliação TEXT, já que o sqlite não se importa com tipos em a maioria dos casos.


0 para resposta № 3

Na verdade, como @delor disse SQLite é quase sem dinheiro, veja http://www.sqlite.org/datatypes.html Você pode atualizar sua tabela por apenas uma consulta: update t set d = strftime("%s", d)