MySQL DATE_FORMAT Explicado: Formate Datas e Horas com Exemplos

1. Introdução

Em bancos de dados MySQL, você lidará frequentemente com dados de data e hora. As datas armazenadas em um banco de dados são salvas em formatos padrão, mas ao exibi‑las para os usuários, costuma‑se querer reformatá‑las para melhor legibilidade. É aí que a função DATE_FORMAT se torna útil. Neste artigo, apresentaremos como usar a função DATE_FORMAT e várias opções de formatação, além de explicar maneiras práticas de aplicá‑la por meio de exemplos reais.

2. Visão geral da função DATE_FORMAT

2.1 O que é a função DATE_FORMAT?

A função DATE_FORMAT é uma função do MySQL usada para converter dados de data em um formato especificado. Ela é utilizada quando se deseja exibir datas em um formato arbitrário, em vez do padrão YYYY‑MM‑DD ou do formato padrão de datetime. Por exemplo, se você quiser mostrar uma data aos usuários no formato “16 de set, 2024”, essa função é muito útil.

2.2 Sintaxe básica

A sintaxe básica da função DATE_FORMAT é a seguinte.

DATE_FORMAT(date, format)
  • date : O dado de data que você deseja formatar.
  • format : Uma string que especifica o formato de saída da data.

Vamos ver um exemplo concreto:

SELECT DATE_FORMAT('2024-09-16', '%Y-%m-%d') AS formatted_date;

Esta consulta converte a data ’2024-09-16′ para o formato “2024-09-16” e a exibe.

3. Parâmetros de formatação de data

3.1 Lista de especificadores de formato

A função DATE_FORMAT suporta muitos especificadores de formato. Abaixo está uma lista dos mais usados:

  • %Y : Ano com 4 dígitos (ex.: 2024)
  • %y : Ano com 2 dígitos (ex.: 24)
  • %m : Mês com 2 dígitos (01 a 12)
  • %c : Mês (1 a 12)
  • %d : Dia com 2 dígitos (01 a 31)
  • %e : Dia (1 a 31)
  • %H : Hora em formato 24 h (00 a 23)
  • %h ou %I : Hora em formato 12 h (01 a 12)
  • %i : Minutos (00 a 59)
  • %s : Segundos (00 a 59)
  • %p : AM ou PM

3.2 Exemplos reais

Vejamos exemplos concretos de como esses especificadores afetam a saída.

SELECT 
    DATE_FORMAT('2024-09-16 14:35:59', '%Y-%m-%d %H:%i:%s') AS full_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%b %d, %Y') AS us_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%d/%m/%Y') AS european_format,
    DATE_FORMAT('2024-09-16 14:35:59', '%h:%i %p') AS twelve_hour_format;

A saída desta consulta será semelhante a isto:

  • full_format : 2024-09-16 14:35:59
  • us_format : Sep 16, 2024
  • european_format : 16/09/2024
  • twelve_hour_format : 02:35 PM

4. Casos de uso práticos

4.1 Cenário 1: Geração de relatórios

Por exemplo, ao gerar relatórios mensais em uma empresa, pode ser desejável exibir as datas no formato “YYYY‑MM”. A consulta a seguir formata as datas dos relatórios para esse fim.

SELECT 
    DATE_FORMAT(sale_date, '%Y-%m') AS report_month,
    SUM(sales) AS total_sales
FROM sales_data
GROUP BY report_month;

Esta consulta devolve o total de vendas mensais dos dados de vendas no formato “2024-09”.

4.2 Cenário 2: Interface do usuário

DATE_FORMAT também é útil quando se quer exibir datas de forma clara para os usuários em uma aplicação web. Por exemplo, você pode usá‑la assim ao mostrar a data do último login na página de perfil do usuário.

SELECT 
    user_name,
    DATE_FORMAT(last_login, '%Y-%m-%d %H:%i') AS last_login_formatted
FROM users;

Isso exibirá a data e hora do último login do usuário como “2024-09-16 14:35”.

4.3 Cenário 3: Otimização de consultas

Em alguns casos, DATE_FORMAT pode ser útil para otimizar consultas ao banco de dados. Por exemplo, você pode usar a formatação ao extrair dados dentro de um intervalo de datas específico.

SELECT 
    *
FROM transactions
WHERE DATE_FORMAT(transaction_date, '%Y-%m') = '2024-09';

Esta consulta extrai todas as transações ocorridas em setembro de 2024.

5. Observações e boas práticas para DATE_FORMAT

5.1 Considerações de desempenho

Se você usar DATE_FORMAT frequentemente, isso pode afetar o desempenho. Em particular, aplicá-lo repetidamente a grandes conjuntos de dados pode aumentar o tempo de processamento. Se necessário, considere armazenar datas pré-formatadas com antecedência ou formatá-las no nível da aplicação.

5.2 Localização

Ao construir um sistema multilíngue usando DATE_FORMAT, você deve prestar atenção à localização. Como os formatos de exibição de datas variam por país e região, você pode precisar alterar dinamicamente os formatos com base no locale do usuário.

5.3 Formatação Consistente

Usar formatos de data consistentes em todo o sistema é essencial para melhorar a experiência do usuário. Por exemplo, ao usar o mesmo formato em formulários de entrada, seções de exibição e relatórios, você pode evitar confundir os usuários.

6. Resumo

A função DATE_FORMAT é uma ferramenta poderosa para formatar dados de data de forma flexível no MySQL. Neste artigo, cobrimos o uso básico, exemplos práticos e notas importantes e melhores práticas. Ao usar esta função de forma eficaz, você pode exibir datas de uma maneira mais clara e amigável ao usuário. Como próximo passo, recomendamos aprender operações mais avançadas de data e hora.

7. Recursos de Referência

Esperamos que este artigo ajude você a entender e usar efetivamente a função DATE_FORMAT.