
Se você já precisou trabalhar com datas em SQL, provavelmente percebeu que pode ser um desafio manipular esse tipo de dado corretamente. Consultas que envolvem datas são essenciais para relatórios, filtros e cálculos, mas muitos iniciantes acabam cometendo erros ao lidar com elas.
Neste artigo, você aprenderá as principais funções de data no SQL e verá exemplos práticos para calcular prazos, filtrar registros e trabalhar com intervalos de tempo de maneira eficiente.
O que são Funções de Data no SQL?
As funções de data no SQL são usadas para obter, formatar, calcular e manipular datas e horas dentro das consultas. Cada banco de dados pode ter pequenas variações, mas os conceitos são os mesmos.
As funções mais comuns incluem:
- Obter a data e hora atual
- Formatar datas
- Adicionar e subtrair períodos de tempo
- Calcular diferenças entre datas
- Filtrar registros por data
Vamos explorar cada uma delas com exemplos práticos.
1. Obtendo a Data e Hora Atual
A primeira coisa que um analista precisa saber é como obter a data e a hora atuais no banco de dados.
MySQL:
SELECT NOW(); -- Retorna a data e hora atuais
SELECT CURDATE(); -- Retorna a data atual sem horário
SELECT CURTIME(); -- Retorna apenas o horário atual
SQL Server:
SELECT GETDATE(); -- Retorna a data e hora atuais
SELECT SYSDATETIME(); -- Retorna a data e hora com precisão maior
Essas funções são úteis para registros automáticos, como datas de criação e atualização de registros.
2. Formatando Datas
Muitas vezes, as datas armazenadas no banco de dados precisam ser formatadas para exibição em relatórios.
MySQL:
SELECT DATE_FORMAT(NOW(), '%d/%m/%Y %H:%i:%s') AS DATA_FORMATADA;
Retorna: 17/03/2025 10:30:45
SQL Server:
SELECT FORMAT(GETDATE(), 'dd/MM/yyyy HH:mm:ss') AS DATA_FORMATADA;
Isso ajuda a apresentar datas no formato mais amigável para o usuário final.
3. Adicionando e Subtraindo Dias, Meses e Anos
Para cálculos como prazos e vencimentos, podemos somar ou subtrair datas.
MySQL:
SELECT DATE_ADD(NOW(), INTERVAL 7 DAY); -- Adiciona 7 dias à data atual
SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); -- Subtrai 1 mês da data atual
SQL Server:
SELECT DATEADD(DAY, 7, GETDATE()); -- Adiciona 7 dias
SELECT DATEADD(MONTH, -1, GETDATE()); -- Subtrai 1 mês
Se precisar calcular um vencimento para 30 dias após uma compra, por exemplo, basta usar DATE_ADD
ou DATEADD
.
4. Calculando Diferença Entre Datas
Calcular a diferença entre datas é fundamental para métricas como tempo de serviço, idade de um cliente ou tempo desde a última compra.
MySQL:
SELECT DATEDIFF(NOW(), '2024-03-01') AS DIAS_PASSADOS;
Retorna o número de dias entre a data atual e 1º de março de 2024.
SQL Server:
SELECT DATEDIFF(DAY, '2024-03-01', GETDATE()) AS DIAS_PASSADOS;
Se precisar calcular a idade de um cliente:
SELECT TIMESTAMPDIFF(YEAR, '1990-01-15', CURDATE()) AS IDADE;
Isso evita a necessidade de cálculos manuais e garante precisão.
5. Filtrando Registros Por Data
Filtros por data são comuns em relatórios e dashboards.
Buscar registros dos últimos 30 dias:
SELECT * FROM pedido WHERE DATA_PEDIDO >= DATE_SUB(NOW(), INTERVAL 30 DAY);
Buscar pedidos entre duas datas:
SELECT * FROM pedido WHERE DATA_PEDIDO BETWEEN '2024-03-01' AND '2024-03-15';
Isso é útil para relatórios financeiros, acompanhamento de vendas e muito mais.
Erros Comuns ao Trabalhar com Datas
🚨 1. Comparar datas no formato errado
❌ Errado:
SELECT * FROM pedido WHERE DATA_PEDIDO = '2025/03/17';
✔️ Correto:
SELECT * FROM pedidos WHERE DATA_PEDIDO = '2025-03-17';
🚨 2. Não considerar o horário em comparações
Se a coluna DATA_PEDIDO inclui horário, o filtro WHERE DATA_PEDIDO = '2025-03-17'
pode falhar. Use BETWEEN
ou >=
e <
para abranger todo o dia:
SELECT * FROM pedido WHERE DATA_PEDIDO BETWEEN '2025-03-17 00:00:00' AND '2025-03-17 23:59:59';
🚨 3. Não otimizar filtros de data
Se sua consulta for lenta, crie um índice na coluna de data:
CREATE INDEX idx_data_pedido ON pedido(DATA_PEDIDO);
Conclusão
As funções de data no SQL são ferramentas essenciais para qualquer analista de dados ou desenvolvedor. Saber como manipular datas corretamente pode otimizar consultas, evitar erros e tornar análises muito mais precisas.
Se você quer continuar aprimorando suas habilidades em SQL, acompanhe o Blog do SQL e conheça o curso SQL Simplificado para aprender na prática como usar SQL para análise de dados e otimização de bancos!
📢 Agora me conta: você já enfrentou problemas ao trabalhar com datas no SQL? Como resolveu?
0 Comentários