SQLite - Data e hora
SQLite suporta cinco funções de data e hora da seguinte maneira -
Sr. Não. | Função | Exemplo |
---|---|---|
1 | data (sequência de tempo, modificadores ...) | Isso retorna a data neste formato: AAAA-MM-DD |
2 | tempo (sequência de tempo, modificadores ...) | Isso retorna a hora como HH: MM: SS |
3 | datetime (timestring, modifiers ...) | Isso retorna AAAA-MM-DD HH: MM: SS |
4 | julianday (sequência de tempo, modificadores ...) | Isso retorna o número de dias desde o meio-dia em Greenwich em 24 de novembro de 4714 AC |
5 | strftime (sequência de tempo, modificadores ...) | Isso retorna a data formatada de acordo com a string de formato especificada como o primeiro argumento formatado de acordo com os formatadores explicados abaixo. |
Todas as cinco funções de data e hora acima usam uma string de hora como argumento. A sequência de tempo é seguida por zero ou mais modificadores. A função strftime () também recebe uma string de formato como seu primeiro argumento. A seção a seguir fornecerá detalhes sobre os diferentes tipos de strings de tempo e modificadores.
Time Strings
Uma sequência de tempo pode estar em qualquer um dos seguintes formatos -
Sr. Não. | Sequência de tempo | Exemplo |
---|---|---|
1 | AAAA-MM-DD | 30/12/2010 |
2 | AAAA-MM-DD HH: MM | 30-12-2010 12:10 |
3 | AAAA-MM-DD HH: MM: SS.SSS | 30-12-2010 12: 10: 04.100 |
4 | MM-DD-AAAA HH: MM | 30-12-2010 12:10 |
5 | HH: MM | 12h10 |
6 | AAAA-MM-DDTHH: MM | 30-12-2010 12:10 |
7 | HH: MM: SS | 12:10:01 |
8 | AAAAMMDD HHMMSS | 20101230 121001 |
9 | agora | 07/05/2013 |
Você pode usar o "T" como um caractere literal que separa a data e a hora.
Modificadores
A string de hora pode ser seguida por zero ou mais modificadores que irão alterar a data e / ou hora retornada por qualquer uma das cinco funções acima. Os modificadores são aplicados da esquerda para a direita.
Os seguintes modificadores estão disponíveis no SQLite -
- NNN dias
- NNN horas
- NNN minutos
- NNN.NNNN segundos
- NNN meses
- NNN anos
- começo do mês
- começo do ano
- começo do dia
- dia da semana N
- unixepoch
- localtime
- utc
Formatadores
SQLite oferece uma função muito útil strftime()para formatar qualquer data e hora. Você pode usar as seguintes substituições para formatar sua data e hora.
Substituição | Descrição |
---|---|
% d | Dia do mês, 31/01 |
% f | Segundos fracionários, SS.SSS |
% H | Hora, 00-23 |
% j | Dia do ano, 001-366 |
% J | Número do dia juliano, DDDD.DDDD |
% m | Mês, 00-12 |
% M | Minuto, 00-59 |
% s | Segundos desde 01/01/1970 |
% S | Segundos, 00-59 |
%W | Dia da semana, 0-6 (0 é domingo) |
%W | Semana do ano, 01-53 |
% Y | Ano, AAAA |
%% | símbolo% |
Exemplos
Vamos tentar vários exemplos agora usando o prompt SQLite. O comando a seguir calcula a data atual.
sqlite> SELECT date('now');
2013-05-07
O comando a seguir calcula o último dia do mês atual.
sqlite> SELECT date('now','start of month','+1 month','-1 day');
2013-05-31
O comando a seguir calcula a data e a hora para um determinado carimbo de data / hora UNIX 1092941466.
sqlite> SELECT datetime(1092941466, 'unixepoch');
2004-08-19 18:51:06
O comando a seguir calcula a data e a hora para um determinado carimbo de data / hora UNIX 1092941466 e compensa seu fuso horário local.
sqlite> SELECT datetime(1092941466, 'unixepoch', 'localtime');
2004-08-19 13:51:06
O comando a seguir calcula o carimbo de data / hora UNIX atual.
sqlite> SELECT strftime('%s','now');
1393348134
O comando a seguir calcula o número de dias desde a assinatura da Declaração de Independência dos Estados Unidos.
sqlite> SELECT julianday('now') - julianday('1776-07-04');
86798.7094695023
O comando a seguir calcula o número de segundos desde um determinado momento em 2004.
sqlite> SELECT strftime('%s','now') - strftime('%s','2004-01-01 02:34:56');
295001572
O comando a seguir calcula a data da primeira terça-feira de outubro para o ano atual.
sqlite> SELECT date('now','start of year','+9 months','weekday 2');
2013-10-01
O comando a seguir calcula o tempo desde a época do UNIX em segundos (como strftime ('% s', 'agora'), exceto inclui a parte fracionária).
sqlite> SELECT (julianday('now') - 2440587.5)*86400.0;
1367926077.12598
Para converter entre UTC e valores de hora local ao formatar uma data, use os modificadores utc ou localtime da seguinte forma -
sqlite> SELECT time('12:00', 'localtime');
05:00:00
sqlite> SELECT time('12:00', 'utc');
19:00:00