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.