As funções de data e hora em SQL permitem extrair, modificar e formatar valores de data e hora. Essas funções são amplamente utilizadas para analisar dados temporais, filtrar por data, calcular intervalos e formatar a saída. Esta aula cobre as funções mais usadas com exemplos baseados no banco de dados Sakila.
CURRENT_DATE — Retorna a data atual (sem hora).Sintaxe:
CURRENT_DATE
Exemplo:
SELECT CURRENT_DATE AS hoje;
Resultado: A data atual, por exemplo: 2025-06-03
CURRENT_TIME — Retorna a hora atual (sem data).Sintaxe:
CURRENT_TIME
Exemplo:
SELECT CURRENT_TIME AS hora_atual;
Resultado: A hora atual, por exemplo: 14:25:30
CURRENT_TIMESTAMP / NOW() — Retorna a data e hora atuais.Sintaxe:
CURRENT_TIMESTAMP
NOW()
Exemplo:
SELECT CURRENT_TIMESTAMP AS data_hora_atual;
SELECT NOW() AS data_hora_atual;
Resultado: A data e hora atuais, por exemplo: 2025-06-03 14:25:30
DATE() — Extrai apenas a data de um valor datetime.Sintaxe:
DATE(valor_datetime)
Exemplo:
SELECT DATE(rental_date) AS data_apenas
FROM rental
LIMIT 3;
Resultado: Retorna apenas a data da coluna rental_date.
TIME() — Extrai apenas a hora de um valor datetime.Sintaxe:
TIME(valor_datetime)
Exemplo:
SELECT TIME(rental_date) AS hora_apenas
FROM rental
LIMIT 3;
Resultado: Retorna apenas a hora da coluna rental_date.
YEAR() — Extrai o ano de um valor de data.Sintaxe:
YEAR(valor_data)
Exemplo:
SELECT YEAR(rental_date) AS ano_locacao
FROM rental
LIMIT 3;
Resultado: Retorna o ano da data de locação.
MONTH() — Extrai o mês de um valor de data.Sintaxe:
MONTH(valor_data)
Exemplo:
SELECT MONTH(rental_date) AS mes_locacao
FROM rental
LIMIT 3;
Resultado: Retorna o mês da data de locação.
DAY() — Extrai o dia do mês de um valor de data.Sintaxe:
DAY(valor_data)
Exemplo:
SELECT DAY(rental_date) AS dia_locacao
FROM rental
LIMIT 3;
Resultado: Retorna o dia do mês da data de locação.
DATE_ADD() — Adiciona um intervalo especificado a uma data.Sintaxe:
DATE_ADD(data, INTERVAL valor unidade)
Exemplo:
SELECT DATE_ADD(rental_date, INTERVAL 7 DAY) AS devolucao_prevista
FROM rental
LIMIT 3;
Resultado: Retorna a data acrescida de 7 dias.
DATE_SUB() — Subtrai um intervalo especificado de uma data.Sintaxe:
DATE_SUB(data, INTERVAL valor unidade)
Exemplo:
SELECT DATE_SUB(rental_date, INTERVAL 3 DAY) AS tres_dias_antes
FROM rental
LIMIT 3;
Resultado: Retorna a data diminuída em 3 dias.
DATEDIFF() — Retorna o número de dias entre duas datas.Sintaxe:
DATEDIFF(data1, data2)
Exemplo:
SELECT DATEDIFF(return_date, rental_date) AS duracao_locacao
FROM rental
WHERE return_date IS NOT NULL
LIMIT 3;
Resultado: O número de dias entre a data de devolução e a data de locação.
DATE_FORMAT() — Formata uma data em um formato especificado (MySQL).Sintaxe:
DATE_FORMAT(data, formato)
Exemplo:
SELECT DATE_FORMAT(rental_date, '%d.%m.%Y') AS data_formatada
FROM rental
LIMIT 3;
Resultado: Data no formato dd.mm.aaaa, por exemplo: 03.06.2025
Especificadores de formato comuns:
%Y: Ano (4 dígitos)%m: Mês (2 dígitos)%d: Dia do mês (2 dígitos)%H: Hora (formato 24h)%i: Minutos%s: SegundosSTRFTIME() — Formata data/hora (SQLite, PostgreSQL).Sintaxe:
STRFTIME(formato, data)
Exemplo:
SELECT STRFTIME('%Y-%m-%d', rental_date) AS data_formatada
FROM rental
LIMIT 3;
Resultado: Data no formato aaaa-mm-dd.
TIMESTAMPDIFF() — Diferença entre duas datas/horas em unidades especificadas (MySQL).Sintaxe:
TIMESTAMPDIFF(unidade, datetime1, datetime2)
Exemplo:
SELECT TIMESTAMPDIFF(DAY, rental_date, return_date) AS dias_locados
FROM rental
WHERE return_date IS NOT NULL
LIMIT 3;
Resultado: O número de dias entre a locação e a devolução.
EXTRACT() — Extrai uma parte de uma data ou hora (ano, mês, dia, etc.).Sintaxe:
EXTRACT(parte FROM data)
Exemplo:
SELECT EXTRACT(YEAR FROM rental_date) AS ano_locacao
FROM rental
LIMIT 3;
Resultado: Extrai o ano da data de locação.
SELECT *
FROM rental
WHERE rental_date > DATE_SUB(CURRENT_DATE, INTERVAL 30 DAY);
SELECT YEAR(rental_date) AS ano, MONTH(rental_date) AS mes, COUNT(*) AS locacoes
FROM rental
GROUP BY ano, mes
ORDER BY ano DESC, mes DESC;
SELECT DATE_FORMAT(rental_date, '%d.%m.%Y') AS locacao_formatada
FROM rental
LIMIT 5;
As funções de data e hora permitem analisar e transformar dados temporais de forma flexível no SQL. Use-as para filtrar, agrupar, calcular intervalos e formatar datas em relatórios. Pratique essas funções com exemplos do banco de dados Sakila para reforçar seus conhecimentos.