O SQLite
datetime()
A função permite que você retorne um valor de data e hora com base em uma string de hora e quaisquer modificadores. Retorna a data neste formato:AAAA-MM-DD HH:MM:SS
Para usar esta função, você precisa fornecer uma string de tempo, além de quaisquer modificadores (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:
datetime(timestring, modifier, modifier, ...)
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 o
datetime()
função que está sendo usada com um argumento. SELECT datetime('now');
Resultado:
2020-04-28 23:56:06
O
now
time string é convertido na data e hora atuais. Adicionar um modificador
Podemos modificar o resultado anterior usando um modificador. Aqui está um exemplo.
SELECT datetime('now', '+3 hours');
Resultado:
2020-04-29 02:56:52
Neste caso, adicionei três horas ao tempo. Dada a hora original, isso também resultou no adiantamento da data para o dia seguinte.
Vários modificadores
Como mencionado, você pode adicionar um ou mais modificadores. Aqui está um exemplo de adição de outro modificador ao exemplo anterior.
SELECT datetime('now', '+3 hours', 'localtime');
Resultado:
2020-04-29 12:58:13
No meu caso, o
localtime
modificador resultou no avanço do tempo. A razão disso é 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. Portanto, 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
datetime('now', 'localtime') AS "Local",
datetime('now', '+3 hours', 'localtime') AS "Modified";
Resultado:
Local Modified ------------------- ------------------- 2020-04-29 10:02:09 2020-04-29 13:02:09
Data como a String de Hora
Os exemplos acima usam
now
como a string de hora, mas você pode fornecer qualquer string de hora válida. Se você fornecer apenas a parte da data, a parte da hora será definida com todos os zeros.
SELECT datetime('2010-08-15');
Resultado:
2010-08-15 00:00:00
Se apenas a parte do tempo for fornecida, a data será definida como 2000-01-01.
SELECT datetime('23:58:57');
Resultado:
2000-01-01 23:58:57
Aqui está um exemplo que usa o Dia Juliano como a string de tempo.
SELECT datetime('2451545.49927083');
Resultado:
2000-01-01 23:58:57
datetime() vs strftime()
O
datetime()
A função retorna exatamente o mesmo resultado que strftime('%Y-%m-%d %H:%M:%S', ...)
retorna. O datetime()
função é apenas uma maneira mais conveniente de fazê-lo. SELECT
datetime('now'),
strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultado:
datetime('now') strftime('%Y-%m-%d %H:%M:%S', 'now') ------------------- ------------------------------------ 2020-04-29 00:16:12 2020-04-29 00:16:12
Período
Assim como todas as funções de data e hora do SQLite,
datetime()
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.