Como adicionar ou subtrair dias de uma data no SQL?
Manipular datas no SQL é essencial para cálculos de prazos, vencimentos e planejamentos. Diferentes bancos de dados oferecem funções específicas para adicionar ou subtrair dias de uma data.
Adicionando dias no MySQL com DATE_ADD
No MySQL, podemos adicionar dias a uma data com DATE_ADD():
SELECT DATE_ADD('2024-03-01', INTERVAL 7 DAY) AS nova_data;
Isso retorna a data "2024-03-08", adicionando 7 dias ao valor original.
Subtraindo dias no MySQL com DATE_SUB
Para subtrair dias de uma data no MySQL, usamos DATE_SUB():
SELECT DATE_SUB('2024-03-01', INTERVAL 10 DAY) AS nova_data;
Aqui, a data resultante será "2024-02-20".
Adicionando e subtraindo dias no PostgreSQL e SQL Server
No PostgreSQL e SQL Server, utilizamos o operador + INTERVAL
:
SELECT '2024-03-01'::DATE + INTERVAL '7 days' AS nova_data;
Para subtrair dias:
SELECT '2024-03-01'::DATE - INTERVAL '10 days' AS nova_data;
Isso retorna a data corretamente ajustada.
Utilizando DATEADD no SQL Server
No SQL Server, a função DATEADD() é utilizada para operações com datas:
SELECT DATEADD(DAY, 5, GETDATE()) AS nova_data;
Isso adiciona 5 dias à data atual.
Cuidados ao manipular datas no SQL
- Certifique-se de que o campo seja do tipo
DATE
,DATETIME
ouTIMESTAMP
para evitar erros. - Para cálculos mais complexos, como meses e anos, os bancos de dados oferecem funções adicionais, como
MONTH()
eYEAR()
.
Por que adicionar e subtrair dias no SQL é essencial?
A manipulação de datas no SQL é uma necessidade comum para sistemas que lidam com prazos, vencimentos e agendas. Desde o cálculo de juros em aplicações financeiras até a previsão de entregas em e-commerces, somar e subtrair dias de uma data permite automação e precisão nos registros. No SQL, cada banco de dados tem sua forma otimizada de realizar essas operações, garantindo que os cálculos sejam eficientes e confiáveis. Sempre que possível, valide as datas após a manipulação para evitar problemas em sistemas que lidam com múltiplos fusos horários.
Algumas aplicações:
- Cálculo de vencimento de boletos e faturas
- Determinação de prazos para entregas
- Geração automática de datas futuras ou passadas
- Planejamento de agendamentos em sistemas de reserva
- Ajuste de datas para cálculos de juros e parcelas
Dicas para quem está começando
- Use
DATE_ADD()
eDATE_SUB()
no MySQL para manipular datas - No PostgreSQL, utilize
+ INTERVAL
e- INTERVAL
- SQL Server oferece
DATEADD()
para cálculos com datas - Para cálculos envolvendo meses, prefira
ADD_MONTHS()
(Oracle) ouDATE_TRUNC()
- Garanta que as colunas manipuladas sejam do tipo DATE ou DATETIME
Contribuições de Fernando Albuquerque