No MariaDB,
DATE_FORMAT()
é uma função de data e hora integrada que formata uma data de acordo com a string de formato fornecida. Requer dois argumentos; a data e a string de formato. Ele também aceita um terceiro argumento opcional que permite especificar a localidade.
Sintaxe
A sintaxe fica assim:
DATE_FORMAT(date, format[, locale])
Onde
date
é a data, format
é a string de formato (consulte os especificadores de formato aceitos) e locale
é uma localidade opcional a ser usada para o formato retornado. Exemplo
Aqui está um exemplo:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y');
Resultado:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%W, %D %M %Y') | +----------------------------------------------------+ | Friday, 25th January 2030 | +----------------------------------------------------+
Aqui está novamente, mas desta vez usando
%r
para retornar a hora retornada no formato de 12 horas:SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r');
Resultado:
+------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r') | +------------------------------------------+ | 10:30:45 AM | +------------------------------------------+
Podemos combiná-los, para obter a hora e a data:
SELECT DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y');
Resultado:
+-------------------------------------------------------+ | DATE_FORMAT('2030-01-25 10:30:45', '%r %W, %D %M %Y') | +-------------------------------------------------------+ | 10:30:45 AM Friday, 25th January 2030 | +-------------------------------------------------------+
O idioma dos nomes dos meses, nomes dos dias, etc., é determinado pelo
lc_time_names
variável do sistema. O padrão é sempre en_US
independentemente da configuração de localidade do sistema. Veja como ver sua configuração atual. O argumento de localidade
A partir do MariaDB 10.3.2, um terceiro argumento opcional pode ser usado para especificar a localidade. Quando isso é especificado, torna a função independente das configurações da sessão.
SELECT DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR');
Resultado:
+----------------------------------------------------+ | DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'es_PR') | +----------------------------------------------------+ | viernes, 25th enero 2030 | +----------------------------------------------------+
Aqui estão mais algumas localidades:
SELECT
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'fr_FR') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'hr_HR') AS hr_HR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'ms_MY') AS fr_FR,
DATE_FORMAT('2030-01-25', '%W, %D %M %Y', 'th_TH') AS th_TH;
Resultado:
fr_FR: vendredi, 25th janvier 2030 hr_HR: Petak, 25th Siječanj 2030 fr_FR: Jumaat, 25th Januari 2030 th_TH: ศุกร์, 25th มกราคม 2030
Nesse caso, o último é tailandês e, embora use caracteres tailandeses para o nome do mês e o nome do dia, não altera o ano para o calendário tailandês. O ano de 2030 seria 2573 ao usar o calendário tailandês. Então eu acho que a suposição é que se você quiser usar o ano tailandês, a data que você passar já usará o ano tailandês.
Data atual
Aqui, passamos
NOW()
como argumento de data para formatar a data atual:SELECT DATE_FORMAT(NOW(), '%r %W, %D %M %Y');
Resultado:
+---------------------------------------+ | DATE_FORMAT(NOW(), '%r %W, %D %M %Y') | +---------------------------------------+ | 09:53:00 AM Tuesday, 11th May 2021 | +---------------------------------------+
Argumentos inválidos
Ao passar qualquer argumento inválido,
DATE_FORMAT()
retorna null
:SELECT DATE_FORMAT('Homer', 'Simpson');
Resultado:
+---------------------------------+ | DATE_FORMAT('Homer', 'Simpson') | +---------------------------------+ | NULL | +---------------------------------+
Argumento ausente
Chamando
DATE_FORMAT()
com o número errado de argumentos, ou sem passar nenhum argumento, resulta em um erro:SELECT DATE_FORMAT();
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
E outro exemplo:
SELECT DATE_FORMAT('2030-05-21');
Resultado:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1
O GET_FORMAT()
Função
Você também pode usar o
GET_FORMAT()
função no segundo argumento para DATE_FORMAT()
. Isso retorna a string de formato completa para um determinado formato de data, o que evita que você tenha que se lembrar da string de formato a ser usada.