Campo para data no SQLite?

Qual o tipo de campo devo colocar para salvar uma data no SQLite?

Pesquisando vi que não tem a opção Date como tipo de campo no SQLite, só que utilizando o programa SQLite Expert Personal ele tem a opção de criar o campos como Date e DateTime. Só que fiquei preocupado de colocar e ficar dando erro na minha aplicação.

1 curtida

Em site oficial:

2.2. Date and Time Datatype

SQLite does not have a storage class set aside for storing dates and/or times. Instead, the built-in Date And Time Functions of SQLite are capable of storing dates and times as TEXT, REAL, or INTEGER values:

  • TEXT as ISO8601 strings (“YYYY-MM-DD HH:MM:SS.SSS”).
  • REAL as Julian day numbers, the number of days since noon in Greenwich on November 24, 4714 B.C. according to the proleptic Gregorian calendar.
  • INTEGER as Unix Time, the number of seconds since 1970-01-01 00:00:00 UTC.
    Applications can chose to store dates and times in any of these formats and freely convert between formats using the built-in date and time functions.

Referencia e direitos autorais link Datatypes In SQLite Version 3

e com essas funções Date And Time Functions, seria a forma tradicional de trabalhar com datas em SQLite.

Na minha visão deve-se fazer conversões que torna um trabalho um pouco chato, então, tente padronizar seu código para esse tipo de gravação.

Exemplo de um código: Android: inserir data e hora no banco de dados SQLite

Infelizmente um pouco chato essa parte desse banco.

Eu vi esse texto.

Só que pensei, como o pessoal esta utilizando?

Eu estou colocando como Text, só que parece que quando se faz um select com between, ou seja, pesquisar por período as vezes não retorna nada e tem a data salva no banco.

Nos dois links que você passou não mostra como foi criado a tabela

Foi explicado sim como grava olha só:

SQLiteDatabase db = this.getWritableDatabase(); 
ContentValues values = new ContentValues(); 
values.put(KEY_TYPE, notificationObj.getType());  
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
Date date = new Date();
values.put("time_stamp", dateFormat.format(date));
db.insert(TABLE_CONTACTS, null, values); 
db.close();

Não estou falando de como foi salvo

É de como foi criado o campo na tabela, ou seja, qual o tipo do campo foi utilizado Text, Real, Integer

Utilize Text.

Eu estou utilizando esse, mas estou encontrando problema na consulta. Por isso que estou pesquisando qual o tipo de campo usar

Eu te passei as funções de banco nesse link , explica tudo! qual é a dificuldade?