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 a TEXT
classe de armazenamento para armazenar data e hora SQLite
Se você usar a TEXT
classe de armazenamento para armazenar valores de data e hora, será necessário usar o formato de string ISO8601 da seguinte forma:
YYYY-MM-DD HH:MM:SS.SSS
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Por exemplo,2016-01-01 10:20:05.123
Primeiro, crie uma nova tabela nomeada datetime_text
para demonstração.
CREATE TABLE datetime_text(
d1 text,
d2 text
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A tabela contém duas colunas d1
e d2
com TEXT
tipo de dados.
Para inserir valores de data e hora na datetime_text
tabela, você usa a DATETIME
função.
Por exemplo, para obter o valor atual de data e hora UTC, você passa a string agora literal para a função da seguinte maneira:
SELECT datetime('now');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Para obter a hora local, você passa um argumento adicional localtime
.
SELECT datetime('now','localtime');
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira os valores de data e hora na datetime_text
tabela da seguinte forma:
INSERT INTO datetime_text (d1, d2)
VALUES(datetime('now'),datetime('now', 'localtime'));
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da datetime_text
tabela.
SELECT
d1,
typeof(d1),
d2,
typeof(d2)
FROM
datetime_text;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Usando REAL
classe de armazenamento para armazenar valores de data e hora SQLite
Você pode usar a 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 aC, com base 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
);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Em segundo lugar, insira o valor “atual” de data e hora na datetime_real
tabela.
INSERT INTO datetime_real (d1)
VALUES(julianday('now'));
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Usamos a julianday()
função para converter a data e hora atuais para o dia juliano.
Terceiro, consulte os dados da datetime_real
tabela.
SELECT d1 FROM datetime_real;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A saída não é legível por humanos.
Felizmente, você pode usar as funções integradas date()
e time()
para formatar um valor de data e hora da seguinte maneira:
SELECT
date(d1),
time(d1)
FROM
datetime_real;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Usando INTEGER
para armazenar valores de data e hora SQLite
Além TEXT
das REAL
classes de armazenamento, você pode usar a INTEGER
classe de armazenamento para armazenar valores de data e hora.
Normalmente usamos INTEGER
para armazenar o tempo UNIX, que é o número de segundos desde 1970-01-01 00:00:00 UTC
. Veja o exemplo a seguir:
Primeiro, crie uma tabela que possua uma coluna cujo tipo de dados seja INTEGER
para armazenar os valores de data e hora.
CREATE TABLE datetime_int (d1 int);
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Segundo, insira o valor atual de data e hora na datetime_int
tabela.
INSERT INTO datetime_int (d1)
VALUES(strftime('%s','now'));
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Terceiro, consulte os dados da datetime_int
tabela.
SELECT d1 FROM datetime_int;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
É um número inteiro.
Para formatar o resultado, você pode usar a função integrada datetime()
da seguinte forma:
SELECT datetime(d1,'unixepoch')
FROM datetime_int;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Usando SQLite, você pode escolher livremente qualquer tipo de dados para armazenar valores de data e hora e usar a função integrada de datas e horas para converter entre formatos.
Para obter informações detalhadas sobre as funções de datas e horas do SQLite, verifique as funções integradas de datas e horas .
Neste tutorial, você aprendeu como usar as classes de armazenamento , e para armazenar valores de data e TEXT
hora REAL
. INTEGER
Além disso, você aprendeu como usar as funções integradas de datas e horas para converter os valores de datas e horas armazenados em formatos legíveis.