Trabalhando com Datas no Sqlite

Muitas pessoas têm dúvida na hora de trabalhar com datas no sqlite, o que é aceitável já que sqlite não tem um tipo data que possa ser especificado para um campo, como date ou datetime, por exemplo, o que nos resta então é usar os tipos nativos do sqlite para armazenar e manipular as datas, ou seja, podemos usar:

TEXT para armazenar uma string com o valor da data, exemplo “2013-03-03 21:21:00”, dessa forma podemos ordenar os valores de acordo com o campo data sem problemas.

Repare que no trecho do código abaixo o campo datahora e ultima são criados com o tipo TEXT.

CREATE TABLE IF NOT EXISTS conta
             (codigo INTEGER PRIMARY KEY AUTOINCREMENT, 
             datahora TEXT, 
             ultima TEXT, 
             descricao TEXT, 
             status_excluido INTEGER DEFAULT 0)'

O próximo trecho de código mostra como gravar o DATETIME atual do sistema usando uma das funções de manipulação de datas do Sqlite:

INSERT INTO conta(datahora, descricao) values(datetime('now'),'Exemplo de texto');

Existem ainda duas outras formas recomendas de trabalhar com datas no Sqlite, que são:

– Usar um campo do tipo REAL e armazenar as datas no formato Juliano.

– Por último, usar um campo do tipo INTEGER para armazenar um valor UNIX TIME, por exemplo.

Os dois últimos tem a vantagem de permitirem comparações entre datas, subtração ou adição, de forma mais simples e direta.

Abaixo alguns links de referência que podem ser bastante úteis na manipulação de datas com Sqlite:

Lista de funções para manipulação de datas
http://www.sqlite.org/lang_datefunc.html

Documentação sobre Datas e outros tipos no Sqlite
http://www.sqlite.org/datatype3.html