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.SSS
Code 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.