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.