Digamos, temos uma tabela criada como:
create table notes (_id integer primary key autoincrement, created_date date)
Para inserir um registro, eu usaria
ContentValues initialValues = new ContentValues();
initialValues.put("date_created", "");
long rowId = mDb.insert(DATABASE_TABLE, null, initialValues);
Mas como definir a coluna date_created para agora ? Para deixar claro, o
initialValues.put("date_created", "datetime('now')");
Não é a solução certa. Ele apenas define a coluna para o texto "datetime ('now')".
android
sqlite
content-values
droidguy
fonte
fonte
Respostas:
Você não pode usar a função datetime usando o wrapper Java "ContentValues". Você pode usar:
SQLiteDatabase.execSQL para que você possa inserir uma consulta SQL bruta.
Ou os recursos de data e hora java:
fonte
No meu código eu uso
DATETIME DEFAULT CURRENT_TIMESTAMP
como tipo e restrição da coluna.No seu caso, a definição da sua mesa seria
fonte
Método 1
Método 2
Método 3 usando funções java Date
fonte
Existem algumas opções que você pode usar:
fonte
ContentValues
eupdate()
, ele apenas coloca a stringDATETIME('now')
na coluna.DEFAULT CURRENT_TIMESTAMP
e depois useiSystem.currentTimeMillis()
para atualizar. Eu vejo uma diferença de hora.Para mim, o problema parece que você está enviando
"datetime('now')"
como uma string, em vez de um valor.Meu pensamento é encontrar uma maneira de pegar a data / hora atual e enviá-la para o seu banco de dados como um valor de data / hora, ou encontrar uma maneira de usar o
(DATETIME('NOW'))
parâmetro embutido do SQLiteConfira as respostas nesta questão SO.com - elas podem levar você na direção certa.
Espero que isso ajude!
fonte
Você pode usar a função de java que é:
Desta forma, em seu banco de dados você salva um número.
Este número pode ser interpretado da seguinte maneira:
Em vez de l na nova data (l), você deve inserir o número na coluna de data.
Então, você tem seu encontro.
Por exemplo, eu salvo no meu banco de dados este número: 1332342462078
Mas quando eu chamo o método acima eu tenho este resultado: 21-mar-2012 16.07.42
fonte
Com base na resposta @ e-satis, criei um método privado na minha classe "DBTools", então adicionar a data atual agora é muito fácil:
Use agora assim:
values.put("lastUpdate", getNow());
fonte
Funciona perfeitamente para mim:
Salve sua data como um longo.
fonte
Este exemplo de código pode fazer o que você quiser:
http://androidcookbook.com/Recipe.seam?recipeId=413
fonte
Certifique-se de que o campo não esteja marcado como 'não nulo' ao mesmo tempo em que você está tentando inserir um carimbo de hora padrão usando a expressão "(DATETIME ('now'))"
fonte