SQLite
 sql >> Base de Dados >  >> RDS >> SQLite

Data e hora do SQLite


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.