Resumo :neste tutorial, mostraremos como trabalhar com os valores de data e hora do SQLite e usar as funções integradas de datas e horas para lidar com valores de data e hora.
SQLite não suporta classe de armazenamento de data e/ou hora integrada. Em vez disso, ele aproveita algumas funções internas de data e hora para usar outras classes de armazenamento, como
TEXT , REAL , ou INTEGER para armazenar os valores de data e hora. Usando o TEXT classe de armazenamento para armazenar data e hora do SQLite
Se você usar o
TEXT classe de armazenamento para armazenar o valor de data e hora, você precisa usar o formato de string ISO8601 da seguinte forma:YYYY-MM-DD HH:MM:SS.SSSCode language: SQL (Structured Query Language) (sql) Por exemplo,
2016-01-01 10:20:05.123 Primeiro, crie uma nova tabela chamada
datetime_text para demonstração. CREATE TABLE datetime_text(
d1 text,
d2 text
);Code language: SQL (Structured Query Language) (sql) Tente
A tabela contém duas colunas
d1 e d2 com TEXT tipo de dados. Para inserir valores de data e hora no
datetime_text tabela, você usa o DATETIME função. Por exemplo, para obter o valor de data e hora UTC atual, você passa a string agora literal para a função da seguinte maneira:
SELECT datetime('now');Code language: SQL (Structured Query Language) (sql) Tente
Para obter a hora local, você passa um argumento adicional
localtime . SELECT datetime('now','localtime');Code language: SQL (Structured Query Language) (sql) Tente
Segundo, insira os valores de data e hora no
datetime_text tabela da seguinte forma:INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));Code language: SQL (Structured Query Language) (sql) Tente
Terceiro, consulte os dados do
datetime_text tabela. SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;Code language: SQL (Structured Query Language) (sql) Tente
Usando REAL classe de armazenamento para armazenar valores de data e hora do SQLite
Você pode usar o
REAL classe de armazenamento para armazenar os valores de data e/ou hora como números de dias julianos, que é o número de dias desde o meio-dia em Greenwich em 24 de novembro de 4714 a.C. baseado no calendário gregoriano proléptico. Vamos dar uma olhada em um exemplo de uso da classe de armazenamento REAL para armazenar valores de data e hora.
Primeiro, crie uma nova tabela chamada
datetime_real . CREATE TABLE datetime_real(
d1 real
);Code language: SQL (Structured Query Language) (sql) Tente
Segundo, insira o valor de data e hora “atual” no
datetime_real tabela. INSERT INTO datetime_real (d1)
VALUES(julianday('now'));Code language: SQL (Structured Query Language) (sql) Tente
Usamos o
julianday() função para converter a data e hora atuais para o Dia Juliano. Terceiro, consulte os dados do
datetime_real tabela. SELECT d1 FROM datetime_real;Code language: SQL (Structured Query Language) (sql) Tente
A saída não é legível por humanos.
Felizmente, você pode usar o
date() embutido e time() funções para formatar um valor de data e hora da seguinte forma:SELECT
date(d1),
time(d1)
FROM
datetime_real;Code language: SQL (Structured Query Language) (sql) Tente
Usando INTEGER para armazenar valores de data e hora SQLite
Além de
TEXT e REAL classes de armazenamento, você pode usar o INTEGER classe de armazenamento para armazenar valores de data e hora. Normalmente usamos o
INTEGER para armazenar a hora do UNIX, que é o número de segundos desde 1970-01-01 00:00:00 UTC . Veja o seguinte exemplo:Primeiro, crie uma tabela que tenha uma coluna cujo tipo de dados seja
INTEGER para armazenar os valores de data e hora. CREATE TABLE datetime_int (d1 int);Code language: SQL (Structured Query Language) (sql) Tente
Segundo, insira o valor atual de data e hora no
datetime_int tabela. INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));Code language: SQL (Structured Query Language) (sql) Tente
Terceiro, consulte os dados do
datetime_int tabela. SELECT d1 FROM datetime_int;Code language: SQL (Structured Query Language) (sql) Tente
É um número inteiro.
Para formatar o resultado, você pode usar o
datetime() embutido funcionar da seguinte forma:SELECT datetime(d1,'unixepoch')
FROM datetime_int;Code language: SQL (Structured Query Language) (sql) Tente
Usando o SQLite, você pode escolher livremente quaisquer tipos de dados para armazenar valores de data e hora e usar a função de datas e horas integradas para converter entre formatos.
Para obter informações detalhadas sobre as funções de datas e horas do SQLite, confira as funções integradas de datas e horas.
Neste tutorial, você aprendeu como usar o
TEXT , REAL e INTEGER classes de armazenamento para armazenar valores de data e hora. Além disso, você aprendeu a usar as funções internas de datas e horas para converter os valores de data e hora armazenados em formatos legíveis.