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

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


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.