Resumo : neste tutorial, você aprenderá como usar a DATE_FORMAT()
função MySQL para formatar um valor de data com base em um formato específico.
Introdução à função MySQL DATE_FORMAT
Para formatar um valor de data para um formato específico, você usa a DATE_FORMAT()
função. A sintaxe da DATE_FORMAT
função é a seguinte:
DATE_FORMAT(date,format)
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
A DATE_FORMAT()
função aceita dois argumentos:
date
: é um valor de data válido que você deseja formatarformat
: é uma string de formato que consiste em especificadores predefinidos. Cada especificador é precedido por um caractere de porcentagem (%
). Consulte a tabela abaixo para obter uma lista de especificadores predefinidos.
A DATE_FORMAT
função retorna uma string cujo conjunto de caracteres e agrupamento dependem das configurações da conexão do cliente.
A tabela a seguir ilustra os especificadores e seus significados que podem ser usados para construir uma sequência de formato de data:
Especificador | Significado |
---|---|
%a | Nome abreviado do dia da semana com três caracteres, por exemplo, segunda, terça, quarta, etc. |
%b | Nome do mês abreviado com três caracteres, por exemplo, janeiro, fevereiro, março, etc. |
%c | Mês em numérico, por exemplo, 1, 2, 3…12 |
%D | Número da semana com zero à esquerda quando o primeiro dia da semana for domingo, por exemplo, 00,01,02…53 |
%d | Dia do mês com zero à esquerda se for 1 número, por exemplo, 00, 01,02,…31 |
%e | Dia do mês sem zero à esquerda, por exemplo, 1,2,…31 |
%f | Microssegundos no intervalo de 000000..999999 |
%H | Hora no formato de 24 horas com zero à esquerda, por exemplo, 00..23 |
%h | Hora no formato de 12 horas com zero à esquerda, por exemplo, 01, 02…12 |
%EU | Igual a %h |
%eu | Minutos com zero à esquerda, por exemplo, 00, 01,…59 |
% j | Dia do ano com zero à esquerda, por exemplo, 001.002,…366 |
%k | Hora no formato de 24 horas sem zero à esquerda, por exemplo, 0,1,2…23 |
%eu | Hora no formato de 12 horas sem zero à esquerda, por exemplo, 1,2…12 |
%M | Nome completo do mês, por exemplo, janeiro, fevereiro,…dezembro |
%m | Nome do mês com zero à esquerda, por exemplo, 00,01,02,…12 |
%p | AM ou PM, dependendo de outros especificadores de horário |
%r | Hora no formato de 12 horas hh:mm:ss AM ou PM |
%S | Segundos com zero à esquerda 00,01,…59 |
%s | Igual a %S |
%T | Hora no formato de 24 horas hh:mm:ss |
%VOCÊ | Dia da semana em número (0=domingo, 1=segunda-feira, etc.) |
%você | Número da semana com zero à esquerda quando o primeiro dia da semana for segunda-feira, por exemplo, 00,01,02…53 |
%V | O mesmo que você; é usado com %X |
%v | O mesmo que você; é usado com %x |
%C | Nome completo do dia da semana, por exemplo, domingo, segunda,…, sábado |
%c | Ano de dois dígitos, por exemplo, 10,11 e 12. |
%X | Ano da semana com quatro dígitos onde o primeiro dia da semana é domingo; frequentemente usado com %V |
%x | Ano para a semana, onde o primeiro dia da semana é segunda-feira, quatro dígitos; usado com %v |
%Y | Ano de quatro dígitos, por exemplo, 2000 e 2001. |
%y | Adicione um caractere de porcentagem (%) à saída |
%% | Adicione o caractere de porcentagem (%) à saída |
A seguir estão algumas strings de formato de data comumente usadas:
Sequência DATE_FORMAT | Data formatada |
---|---|
%Y-%m-%d | 04/07/2013 |
%e/%c/%Y | 07/04/2013 |
%c/%e/%Y | 04/07/2013 |
%d/%m/%Y | 07/04/2013 |
%m/%d/%Y | 04/07/2013 |
%e/%c/%Y %H:%i | 07/04/2013 11:20 |
%c/%e/%Y %H:%i | 04/07/2013 11:20 |
%d/%m/%Y %H:%i | 07/04/2013 11:20 |
%m/%d/%Y %H:%i | 04/07/2013 11:20 |
%e/%c/%Y %T | 07/04/2013 11:20 |
%c/%e/%Y %T | 04/07/2013 11:20 |
%d/%m/%Y %T | 07/04/2013 11:20 |
%m/%d/%Y %T | 04/07/2013 11:20 |
%a %D %b %Y | Qui, 4 de julho de 2013 |
%a %D %b %Y %H:%i | Qui, 4 de julho de 2013, 11h20 |
%a %D %b %Y %T | Qui, 4 de julho de 2013 11:20:05 |
%a %b %e %Y | Qui, 4 de julho de 2013 |
%a %b %e %Y %H:%i | Qui, 4 de julho de 2013 11h20 |
%a %b %e %Y %T | Qui, 4 de julho de 2013 11:20:05 |
%W %D %M %Y | Quinta-feira, 4 de julho de 2013 |
%W %D %M %Y %H:%i | Quinta-feira, 4 de julho de 2013 11h20 |
%W %D %M %Y %T | Quinta-feira, 4 de julho de 2013 11:20:05 |
%l:%i %p %b %e, %Y | 04/07/2013 11:20 |
%M %e, %Y | 4 de julho de 13 |
%a, %d %b %Y %T | Qui, 04 de julho de 2013 11:20:05 |
Exemplos de DATE_FORMAT do MySQL
Vamos dar uma olhada na orders
tabela do banco de dados de exemplo .
Para selecionar os dados do pedido e formatar o valor da data, use a seguinte instrução:
SELECT
orderNumber,
DATE_FORMAT(orderdate, '%Y-%m-%d') orderDate,
DATE_FORMAT(requireddate, '%a %D %b %Y') requireddate,
DATE_FORMAT(shippedDate, '%W %D %M %Y') shippedDate
FROM
orders;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Formatamos a data do pedido, a data exigida e a data de envio de cada pedido com base em diferentes formatos de data especificados pelas strings de formato.
MySQL DATE_FORMAT
comORDER BY
Veja o exemplo a seguir:
SELECT
orderNumber,
DATE_FORMAT(shippeddate, '%W %D %M %Y') shippeddate
FROM
orders
WHERE
shippeddate IS NOT NULL
ORDER BY shippeddate;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Na consulta, selecionamos todos os pedidos cujas datas de envio não foram NULL
e classificamos os pedidos pela data de envio. No entanto, os pedidos não foram classificados corretamente.
O motivo é que usamos shippeddate
como alias para a saída da DATE_FORMAT
função, que é uma string, a cláusula ORDER BY pegou o alias e classificou os pedidos com base em valores de string, não em valores de data.
Para corrigir esse problema, temos que usar um alias diferente do nome da coluna; veja a seguinte declaração:
SELECT
orderNumber,
DATE_FORMAT(shippeddate, '%W %D %M %Y') 'Shipped date'
FROM
orders
WHERE
shippeddate IS NOT NULL
ORDER BY shippeddate;
Linguagem de código: SQL (linguagem de consulta estruturada) ( sql )
Neste tutorial, mostramos como usar a DATE_FORMAT
função MySQL para formatar a data com base em um formato especificado.