No MySQL, você pode usar o
GET_FORMAT()
função para retornar uma string de formato para os argumentos fornecidos. Isso pode ser útil quando você precisa fornecer uma string de formato para outra função, como DATE_FORMAT()
ou STR_TO_DATE()
. Sintaxe
A sintaxe oficial é assim:
GET_FORMAT({DATE|TIME|DATETIME}, {'EUR'|'USA'|'JIS'|'ISO'|'INTERNAL'})
Exemplo 1 – Uso básico
Aqui está um exemplo para demonstrar como funciona.
SELECT GET_FORMAT(DATE,'USA');
Resultado:
+------------------------+ | GET_FORMAT(DATE,'USA') | +------------------------+ | %m.%d.%Y | +------------------------+
Portanto, este exemplo retorna a string de formato para EUA. Agora podemos pegar essa string de formato e usá-la em várias funções de formatação de data.
Assim:
SELECT DATE_FORMAT('2020-03-07', '%m.%d.%Y') AS 'Formatted';
Resultado:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
No entanto, também podemos passar esta função diretamente para o
DATE_FORMAT()
função. Assim:SELECT DATE_FORMAT('2020-03-07', GET_FORMAT(DATE,'USA')) AS 'Formatted';
Resultado:
+------------+ | Formatted | +------------+ | 03.07.2020 | +------------+
Portanto, isso nos poupa de ter que lembrar qual string de formato usar –
GET_FORMAT()
faz isso por nós. Exemplo 2 – Valores de data
Este exemplo lista todas as variações do segundo argumento quando o primeiro argumento é
DATE
. SELECT GET_FORMAT(DATE,'USA') AS 'USA', GET_FORMAT(DATE,'JIS') AS 'JIS', GET_FORMAT(DATE,'ISO') AS 'ISO', GET_FORMAT(DATE,'EUR') AS 'EUR', GET_FORMAT(DATE,'INTERNAL') AS 'INTERNAL';
Resultado:
+----------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +----------+----------+----------+----------+----------+ | %m.%d.%Y | %Y-%m-%d | %Y-%m-%d | %d.%m.%Y | %Y%m%d | +----------+----------+----------+----------+----------+
Exemplo 3 – Valores de data e hora
Este exemplo lista todas as variações do segundo argumento quando o primeiro argumento é
DATETIME
. SELECT GET_FORMAT(DATETIME,'USA') AS 'USA', GET_FORMAT(DATETIME,'JIS') AS 'JIS', GET_FORMAT(DATETIME,'ISO') AS 'ISO', GET_FORMAT(DATETIME,'EUR') AS 'EUR', GET_FORMAT(DATETIME,'INTERNAL') AS 'INTERNAL';
Resultado:
+-------------------+-------------------+-------------------+-------------------+--------------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------------+-------------------+-------------------+-------------------+--------------+ | %Y-%m-%d %H.%i.%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H:%i:%s | %Y-%m-%d %H.%i.%s | %Y%m%d%H%i%s | +-------------------+-------------------+-------------------+-------------------+--------------+
Exemplo 4 – Valores de tempo
Este exemplo lista todas as variações do segundo argumento quando o primeiro argumento é
TIME
. SELECT GET_FORMAT(TIME,'USA') AS 'USA', GET_FORMAT(TIME,'JIS') AS 'JIS', GET_FORMAT(TIME,'ISO') AS 'ISO', GET_FORMAT(TIME,'EUR') AS 'EUR', GET_FORMAT(TIME,'INTERNAL') AS 'INTERNAL';
Resultado:
+-------------+----------+----------+----------+----------+ | USA | JIS | ISO | EUR | INTERNAL | +-------------+----------+----------+----------+----------+ | %h:%i:%s %p | %H:%i:%s | %H:%i:%s | %H.%i.%s | %H%i%s | +-------------+----------+----------+----------+----------+
Especificadores de unidade
A string de formato retornada pode ser composta por qualquer combinação dos seguintes especificadores.
Especificador | Descrição |
---|---|
%a | Nome abreviado do dia da semana (Sun ..Sat ) |
%b | Nome do mês abreviado (Jan ..Dec ) |
%c | Mês, numérico (0 ..12 ) |
%D | Dia do mês com sufixo em inglês (0th , 1st , 2nd , 3rd , …) |
%d | Dia do mês, numérico (00 ..31 ) |
%e | Dia do mês, numérico (0 ..31 ) |
%f | Microssegundos (000000 ..999999 ) |
%H | Hora (00 ..23 ) |
%h | Hora (01 ..12 ) |
%I | Hora (01 ..12 ) |
%i | Minutos, numérico (00 ..59 ) |
%j | Dia do ano (001 ..366 ) |
%k | Hora (0 ..23 ) |
%l | Hora (1 ..12 ) |
%M | Nome do mês (January ..December ) |
%m | Mês, numérico (00 ..12 ) |
%p | AM ou PM |
%r | Hora, 12 horas (hh:mm:ss seguido por AM ou PM ) |
%S | Segundos (00 ..59 ) |
%s | Segundos (00 ..59 ) |
%T | Horário, 24 horas (hh:mm:ss ) |
%U | Semana (00 ..53 ), onde domingo é o primeiro dia da semana; WEEK() modo 0 |
%u | Semana (00 ..53 ), onde segunda-feira é o primeiro dia da semana; WEEK() modo 1 |
%V | Semana (01 ..53 ), onde domingo é o primeiro dia da semana; WEEK() modo 2; usado com %X |
%v | Semana (01 ..53 ), onde segunda-feira é o primeiro dia da semana; WEEK() modo 3; usado com %x |
%W | Nome do dia da semana (Sunday ..Saturday ) |
%w | Dia da semana (0 =Domingo..6 =Sábado) |
%X | Ano da semana em que domingo é o primeiro dia da semana, numérico, quatro dígitos; usado com %V |
%x | Ano para a semana, onde segunda-feira é o primeiro dia da semana, numérico, quatro dígitos; usado com %v |
%Y | Ano, numérico, quatro dígitos |
%y | Ano, numérico (dois dígitos) |
%% | Um literal % personagem |
% | x , para qualquer “x ” não listado acima |