Aqui estão três maneiras de retornar o nome do mês de uma data no MariaDB.
O MONTHNAME()
Função
O
MONTHNAME()
A função foi projetada especificamente para retornar o nome do mês de uma data. Para fazer isso, passe a data para a função ao chamá-la. O nome completo do mês será retornado. Exemplo:
SELECT MONTHNAME('2021-08-19');
Resultado:
+-------------------------+ | MONTHNAME('2021-08-19') | +-------------------------+ | August | +-------------------------+
O idioma usado para o nome do mês é controlado pelo valor do
lc_time_names
variável do sistema. Veja MONTHNAME()
para um exemplo de como isso afeta a saída. O DATE_FORMAT()
Função
O
DATE_FORMAT()
função formata uma determinada data em um formato especificado. Você especifica a data e o formato ao chamar a função. Você pode retornar o nome completo do mês passando
%M
como a string de formato. Exemplo:
SELECT DATE_FORMAT('2021-08-19', '%M');
Resultado:
+---------------------------------+ | DATE_FORMAT('2021-08-19', '%M') | +---------------------------------+ | August | +---------------------------------+
Como com
MONTHNAME()
, o idioma usado para o nome do mês é controlado pelo valor do lc_time_names
variável do sistema. No entanto, o DATE_FORMAT()
A função aceita um terceiro argumento opcional que permite especificar a localidade. Aqui está um exemplo de especificação de uma localidade:
SELECT DATE_FORMAT('2021-08-19', '%M', 'ca_ES');
Resultado:
+------------------------------------------+ | DATE_FORMAT('2021-08-19', '%M', 'ca_ES') | +------------------------------------------+ | agost | +------------------------------------------+
Nome abreviado do mês
Passando
%b
para o DATE_FORMAT()
A função retorna o nome curto do mês. Exemplo:
SELECT DATE_FORMAT('2021-08-19', '%b');
Resultado:
+---------------------------------+ | DATE_FORMAT('2021-08-19', '%b') | +---------------------------------+ | Aug | +---------------------------------+
Isso pode ser replicado com o
MONTHNAME()
função usando LEFT()
para pegar os 3 primeiros caracteres do nome do mês. Exemplo:
SELECT LEFT(MONTHNAME('2021-08-19'), 3);
Resultado:
+----------------------------------+ | LEFT(MONTHNAME('2021-08-19'), 3) | +----------------------------------+ | Aug | +----------------------------------+
O mesmo conceito pode ser alcançado convertendo o resultado de
MONTHNAME()
para um tipo de dados de três caracteres com uma função como CAST()
. No entanto, embora essa abordagem funcione em
en_US
, pode nem sempre funcionar em outros idiomas. Por exemplo:SET lc_time_names = 'th_TH';
SELECT
DATE_FORMAT('2021-08-19', '%b') AS "Short 1",
LEFT(MONTHNAME('2021-08-19'), 3) AS "Short 2",
MONTHNAME('2021-08-19') AS "Full";
Resultado:
+----------+-----------+-----------------------+ | Short 1 | Short 2 | Full | +----------+-----------+-----------------------+ | ส.ค. | สิง | สิงหาคม | +----------+-----------+-----------------------+