/ / Armazenando datas e calculando a idade no SQLite - c ++, banco de dados, sqlite

Armazenando datas e calculando a idade no SQLite - c ++, banco de dados, sqlite

No meu programa, preciso salvar o aniversário das pessoas em um banco de dados sqlite. Então, dentro do programa, também preciso exibir o aniversário e a idade deles.

É uma maneira especial de salvar datas em uma coluna ou preciso salvá-las separadamente dia, mês e ano.

Minha outra pergunta é como obter a idade deles com precisão em anos, meses e dias. é possível fazer isso com algum tipo de função.

Respostas:

2 para resposta № 1

A data pode ser armazenada em uma única coluna como texto, real ou int e pode ser usada com o date funções.

Documentação:

1.2 Tipo de Dados Data e Hora

SQLite não possui uma classe de armazenamento reservada para armazenar datas e / ou horários. Em vez disso, o built-in Funções de data e hora do SQLite são capazes de armazenar datas e horas como TEXT, REAL ou INTEGER valores:

TEXTO como strings ISO8601 ("AAAA-MM-DD HH: MM: SS.SSS").
REAL como números do dia juliano, o número de dias desde o meio dia em Greenwich, em 24 de novembro de 4714 a.C. de acordo com o proléptico Calendário gregoriano.
INTEGER como Unix Time, o número de segundos desde1970-01-01 00:00:00 UTC. Os aplicativos podem optar por armazenar datas e horários em qualquer desses formatos e converta livremente entre formatos usando o funções de data e hora.

Um exemplo de seleção da idade dos usuários no banco de dados seria:

-- "2001-01-01" would be the text column where you store the birthdate
SELECT (strftime("%Y", "now") - strftime("%Y", "2001-01-01")) - (strftime("%m-%d", "now") < strftime("%m-%d", "2001-01-01")) AS "Years"

[reference]


1 para resposta № 2

A documentação do sqlite em http://www.sqlite.org/datatype3.html recomenda o uso de cadeias ISO8601. O SQLite também fornece algumas funções que você pode usar em consultas: http://www.sqlite.org/lang_datefunc.html