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

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


SQLite tem um date() função que permite retornar um valor de data com base em uma string de hora e quaisquer modificadores.

Retorna a data neste formato:AAAA-MM-DD

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 do date() função fica assim:
date(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 date() função que está sendo usada com um argumento.
SELECT date('now');

Resultado:
2020-04-27

O now time string é convertido na data e hora atuais. Dado que estou usando o date() função, apenas a data é retornada.

Adicionar um modificador


Podemos modificar o resultado anterior usando um modificador. Aqui está um exemplo.
SELECT date('now', '+6 months');

Resultado:
2020-10-27

Neste caso, adicionei seis meses à data.

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 date('now', '+6 months', 'localtime');

Resultado:
2020-10-28

No meu caso, o localtime modificador resultou na adição de um dia à data.

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.

String Literal como a string de tempo


Os exemplos acima usam now como a string de hora, mas você pode fornecer qualquer string de hora válida.

Aqui estão alguns outros exemplos.
SELECT date('2020-04-27 23:58:57');

Resultado:
2020-04-27 

Nesse caso, ele simplesmente remove a parte da hora da data.

Aqui está novamente, mas com alguns modificadores.
SELECT date('2020-04-27 23:58:57', 'start of year', '+6 months');

Resultado:
2020-07-01 

Nesse caso, eu queria obter a data que é 6 meses a partir do início do ano da data fornecida.

Aqui está um exemplo que usa o Dia Juliano como a string de tempo.
SELECT date('2458967.49737293');

Resultado:
2020-04-27

data() vs strftime()


A date() A função retorna exatamente o mesmo resultado que strftime('%Y-%m-%d', ...) retorna. A date() função é apenas uma maneira mais conveniente de fazê-lo.
SELECT 
  date('now'),
  strftime('%Y-%m-%d', 'now');

Resultado:
date('now')  strftime('%Y-%m-%d', 'now')
-----------  ---------------------------
2020-04-28   2020-04-28                 

Período


Assim como todas as funções de data e hora do SQLite, date() 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.