Função MySQL DATE_FORMAT()

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_FORMATfunçã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 formatar
  • format: é 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_FORMATfunçã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 orderstabela 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 )

Experimente

Exemplo de tabela de pedidos de função MySQL DATE_FORMAT

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_FORMATcomORDER 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 )

Experimente

Exemplo de cláusula MysQL DATE_FORMAT com ORDER BY

Na consulta, selecionamos todos os pedidos cujas datas de envio não foram NULLe classificamos os pedidos pela data de envio. No entanto, os pedidos não foram classificados corretamente.

O motivo é que usamos shippeddatecomo alias para a saída da DATE_FORMATfunçã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 )

Experimente

MysQL DATE_FORMAT com cláusula ORDER BY

Neste tutorial, mostramos como usar a DATE_FORMATfunção MySQL para formatar a data com base em um formato especificado.

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *