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

Funções de data e hora do SQLite


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