SQLite suporta cinco funções para trabalhar com datas e horas. Esses são:
date()
time()
datetime()
julianday()
strftime()
Todas essas funções aceitam uma string de tempo como argumento. Eles também aceitam outros argumentos para modificar/formatar a saída.
O
strftime()
é a função mais versátil das cinco. Na verdade, esta função pode fazer tudo o que as outras quatro podem. Em outras palavras, você pode usar
strftime()
para todos os seus requisitos de formatação de data e hora. As outras quatro funções estão disponíveis apenas por conveniência. Sintaxe
A sintaxe de cada função é a seguinte:
date(timestring, modifier, modifier, ...)
time(timestring, modifier, modifier, ...)
datetime(timestring, modifier, modifier, ...)
julianday(timestring, modifier, modifier, ...)
strftime(format, timestring, modifier, modifier, ...)
Nas primeiras quatro funções, o primeiro argumento é uma string de tempo e quaisquer argumentos subsequentes são modificadores.
No
strftime()
function o primeiro argumento é a string de formato, seguida pela string de tempo e quaisquer modificadores. Todas as strings e modificadores de tempo válidos estão listados na parte inferior deste artigo.
Mas primeiro, vamos ver alguns exemplos rápidos de cada uma dessas funções.
A função date()
Você pode usar o
date()
função com um argumento ou com vários argumentos. Aqui está um exemplo com apenas um argumento:
SELECT date('now');
Resultado:
2020-04-23
Aqui está um exemplo que usa um modificador:
SELECT date('now', 'localtime');
Resultado:
2020-04-24
Neste caso eu usei o
localtime
modificador. Esse modificador assume que a string de hora está em UTC (Universal Coordinated Time) e ajusta a string de hora para que ela exiba a hora local. A função time()
O
time()
função é semelhante ao date()
função, exceto que ela exibe a hora em vez da data. Aqui está um exemplo:
SELECT time('now');
Resultado:
00:02:05
E aqui está com o
localtime
modificador:SELECT time('now', 'localtime');
Resultado:
10:02:09
A função datetime()
O SQLite
datetime()
A função combina as duas funções anteriores, no sentido de que gera a data e a hora. Aqui está um exemplo:
SELECT datetime('now');
Resultado:
"2020-04-24 00:04:13"
E aqui está com o
localtime
modificador:SELECT datetime('now', 'localtime');
Resultado:
"2020-04-24 10:04:46"
A função julianday()
O
julianday()
A função retorna a contagem contínua de dias desde o início do Período Juliano, que é segunda-feira, 1º de janeiro de 4713 aC, calendário juliano proléptico (24 de novembro de 4714 aC, no calendário gregoriano proléptico). Veja como é usar
now
como a cadeia de tempo:SELECT julianday('now');
Resultado:
2458963.50964815
E aqui está usando o
localtime
modificador:SELECT julianday('now', 'localtime');
Resultado:
2458963.92637685
A função strftime()
Como mencionado, o
strftime()
A função pode ser usada para gerar valores de data e hora em qualquer um dos formatos disponíveis nas funções anteriores. Esta função permite que você seja muito específico sobre como seus valores de data/hora são formatados. Ele permite que você forneça o formato preciso que você deseja que seja apresentado.
A sintaxe desta função é assim:
strftime(format, timestring, modifier, modifier, ...)
Observe que o primeiro argumento é
format
. É aqui que você fornece o formato no qual deseja que a string de tempo seja gerada. A string de formato para
strftime()
pode consistir em qualquer uma das seguintes substituições:%d | Dia do mês:00 |
%f | Frações de segundos:SS.SSS |
%H | Hora:00-24 |
%j | Dia do ano:001-366 |
%J | Número do dia juliano |
%m | Mês:01-12 |
%M | Minuto:00-59 |
%s | Segundos desde 01-01-1970 |
%S | Segundos:00-59 |
%w | Dia da semana 0-6 com domingo==0 |
%W | Semana do ano:00-53 |
%Y | Ano:0000-9999 |
%% | % |
Aqui está um exemplo:
SELECT strftime('%Y-%m-%d %H:%M:%S', 'now');
Resultado:
"2020-04-24 00:43:51"
Neste caso, obtemos o mesmo resultado de quando usamos o
datetime()
função. Aqui está com o
localtime
modificador:SELECT strftime('%Y-%m-%d %H:%M:%S', 'now', 'localtime');
Resultado:
"2020-04-24 10:45:27"
Novamente, mesmo resultado com
datetime()
. A diferença é que strftime()
nos permite especificar explicitamente o formato da saída. Por exemplo:
SELECT strftime('%d/%m/%Y %H:%M:%S', 'now', 'localtime');
SELECT strftime('%m/%d/%Y (%H:%M:%S)', 'now', 'localtime');
SELECT strftime('%H:%M:%S on %d/%m/%Y', 'now', 'localtime');
Resultado:
"24/04/2020 10:49:41" "04/24/2020 (10:52:24)" "10:51:13 on 24/04/2020"
Formatos de string de tempo válidos
O argumento de string de tempo em todas as funções de data/hora pode ser fornecido em qualquer um dos seguintes formatos:
- AAAA-MM-DD
- AAAA-MM-DD HH:MM
- AAAA-MM-DD HH:MM:SS
- AAAA-MM-DD HH:MM:SS.SSS
- AAAA-MM-DDTHH:MM
- AAAA-MM-DDTHH:MM:SS
- AAAA-MM-DDTHH:MM:SS.SSS
- HH:MM
- HH:MM:SS
- HH:MM:SS.SSS
- agora
- DDDDDDDDDD
Modificadores válidos
Você pode usar qualquer um dos seguintes modificadores com funções de data/hora:
- NNN dias
- NNN horas
- NNN minutos
- NNN.NNNN segundos
- NNN meses
- NNN anos
- início do mês
- início do ano
- início do dia
- dia da semana N
- unixepoch
- hora local
- ut
O
N
refere-se a um número que é adicionado à data, com base na unidade especificada. Por exemplo:
SELECT
date('now'),
date('now', '3 days');
Resultado:
date('now') date('now', '3 days') ----------- --------------------- 2020-04-24 2020-04-27
Aqui está um que usa
start of month
como o modificador:SELECT
date('now'),
date('now', 'start of month');
Resultado:
date('now') date('now', 'start of month') ----------- ----------------------------- 2020-04-24 2020-04-01