Pular para o conteúdo principal
Documentos
Sintaxe básicaFunções JSONAcionadoresGerenciamento de tabelas e esquemasFunções de cadeia de caracteresFunções matemáticasFunções de dataBancos de dadosÍndices

PostgreSQL INTERVALO

O `INTERVAL` do PostgreSQL é uma função de data utilizada para representar e manipular um intervalo de tempo, como dias, meses ou anos. Permite a adição ou subtração de intervalos de tempo específicos dos tipos de dados `TIMESTAMP` ou `DATE`.

Uso

A função `INTERVAL` é usada quando você precisa realizar aritmética de data e hora, como adicionar ou subtrair períodos de tempo de uma data. Ele é particularmente útil para lidar com tarefas que envolvem eventos recorrentes ou agendamento.

SELECT date_column ± INTERVAL 'quantity unit';

Nessa sintaxe, `INTERVAL 'unidade de quantidade'` especifica o intervalo de tempo a ser adicionado ou subtraído de `date_column`.

Exemplos

1. Adicionando dias a uma data

SELECT CURRENT_DATE + INTERVAL '5 days';

Este exemplo adiciona cinco dias à data atual, retornando uma nova data cinco dias no futuro.

2. Subtraindo meses de uma data

SELECT CURRENT_DATE - INTERVAL '2 months';

Aqui, dois meses são subtraídos da data atual, fornecendo uma data dois meses antes.

3. Manipulação de intervalos complexos

SELECT NOW() + INTERVAL '1 year 2 months 3 days';

Este exemplo adiciona um intervalo complexo de um ano, dois meses e três dias ao registro de data e hora atual, demonstrando a flexibilidade da função `INTERVAL`.

Uso adicional com precisão de intervalo

O PostgreSQL permite a precisão de intervalos, que pode especificar intervalos com mais precisão, como `INTERVAL YEAR TO MONTH` ou `INTERVAL DAY TO SECOND`. Isso é útil para especificações complexas.

SELECT INTERVAL '1-2' YEAR TO MONTH; -- 1 year and 2 months

Funções de normalização de intervalo

Para a normalização de intervalos, o PostgreSQL fornece funções como `JUSTIFY_DAYS()`, `JUSTIFY_HOURS()` e `JUSTIFY_INTERVAL()` para ajustar os intervalos a formas mais convencionais.

SELECT JUSTIFY_INTERVAL(INTERVAL '30 days'); -- Converts to '1 month'

Manuseio de unidades diferentes

Os intervalos podem se comportar de forma diferente, dependendo das unidades usadas. Por exemplo, adicionar um mês a uma data em janeiro resulta em uma data em fevereiro, que pode ter menos dias.

Dicas e práticas recomendadas

  • Use unidades consistentes. Seja explícito com as unidades (por exemplo, dias, meses) para garantir a clareza e evitar mal-entendidos.
  • Validar a aritmética de datas. Sempre teste os cálculos de intervalo para confirmar se eles produzem os resultados esperados, principalmente com a variação da duração dos meses e dos anos bissextos.
  • Combine com `AGE()`. Use `INTERVAL` com a função `AGE()` para calcular a diferença entre duas datas e obter um tratamento de datas mais abrangente.
  • Aproveitamento para agendamento. Utilize o `INTERVAL` em aplicativos de agendamento para lidar facilmente com eventos e compromissos recorrentes.
  • Evite armadilhas comuns. Esteja ciente dos possíveis problemas, como intervalos negativos ou estouro de intervalo, e garanta que a lógica lide corretamente com esses cenários.