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

Como a função Strftime() funciona no SQLite


O SQLite strftime() A função permite retornar um valor de data e hora em um formato especificado.

O valor de data/hora real retornado é baseado em uma string de hora que você fornece como argumento ao chamar a função, bem como em quaisquer modificadores incluídos (como argumentos opcionais). Um modificador permite que você altere a data, como adicionar um número de dias, defini-lo para a hora local, etc.

Sintaxe


A sintaxe fica assim:
strftime(format, timestring, modifier, modifier, ...)

O format argumento pode ser qualquer combinação de substituições de string de formato válidas para o strftime() função.

A timestring argumento deve ser uma string de tempo válida.

O modifier argumentos são opcionais. Você pode fornecer um ou mais modificadores. Se você fornecer um modificador, ele deverá ser um modificador válido.

Exemplo


Aqui está um exemplo para demonstrar.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');

Resultado:
2020-04-29 01:29:54

O now A string de hora é convertida na data e hora atuais, com base na string de formato fornecida.

Nesse caso, minha string de formato retorna exatamente o mesmo resultado que datetime('now') teria voltado.

Adicionar um modificador


Podemos modificar o resultado anterior usando um modificador. Aqui está um exemplo.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours');

Resultado:
2020-04-29 03:31:50

Neste caso, adicionei duas horas ao tempo.

Vários modificadores


Você pode adicionar vários modificadores. Aqui está um exemplo de adição de outro modificador ao exemplo anterior.
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime');

Resultado:
2020-04-29 13:33:22

No meu caso, o localtime modificador resultou no avanço do tempo.

Isso ocorre porque o localtime O modificador assume que a string de tempo fornecida está em UTC (Universal Coordinated Time). Em seguida, ele ajusta a string de hora para que exiba a hora local.

Você pode obter um resultado diferente, dependendo do seu horário local.

Aqui está novamente comparando a hora local original com o resultado modificado:
SELECT 
  strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime') AS "Local",
  strftime('%Y-%m-%d %H:%M:%S', 'now', '+2 hours', 'localtime') AS "Modified";

Resultado:
Local                Modified           
-------------------  -------------------
2020-04-29 11:34:57  2020-04-29 13:34:57

Tempo Unix/Epoch


Você pode usar o %s string de formato (minúsculas) para calcular o tempo de época.
SELECT strftime('%s', 'now');

Resultado:
1588124826

Epoch time (também conhecido como Epoch time, POSIX time, seconds since the Epoch ou UNIX Epoch time) é o número de segundos desde 1970-01-01.

O tempo Unix é amplamente utilizado em sistemas operacionais e formatos de arquivo.

Dia Juliano


Você pode usar %J para retornar o Dia Juliano.

Julian Day é o número de dias desde o meio-dia em Greenwich em 24 de novembro de 4714 a.C. (usando o calendário gregoriano proléptico).

Se estiver usando o calendário juliano proléptico, esta é segunda-feira, 1º de janeiro de 4713 aC.

O dia juliano é normalmente usado por astrônomos, software, etc., para calcular os dias decorridos entre dois eventos.

Veja como retornar o Dia Juliano com o strftime() função.
SELECT strftime('%J', 'now');

Resultado:
2458968.575441667               

Outra maneira de fazer isso no SQLite é usar o julianday() função.

Período


Assim como todas as funções de data e hora do SQLite, strftime() só funciona para datas entre 0000-01-01 00:00:00 e 9999-12-31 23:59:59 (números do dia juliano 1721059.5 a 5373484.5).

Para datas fora desse intervalo, os resultados são indefinidos.