MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como DATE_FORMAT() funciona no MariaDB


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.