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.