No MariaDB, você pode usar o
DATE_FORMAT()
função para retornar várias partes de uma data. Uma das coisas que você pode retornar é o nome curto do mês. Por exemplo Nov
ou Dec
(em vez de November
ou December
). O especificador de formato "Nome de mês curto" (%b
)
A chave para retornar o nome curto do mês ao usar o
DATE_FORMAT()
função é usar o especificador de formato aplicável. No MariaDB, o especificador de formato para o nome curto do mês é:
%b
Exemplo
Segue um exemplo para demonstrar:
SELECT DATE_FORMAT('2023-12-25', '%b');
Resultado:
+---------------------------------+ | DATE_FORMAT('2023-12-25', '%b') | +---------------------------------+ | Dec | +---------------------------------+
Aqui está outro exemplo que percorre os vários meses do ano:
SELECT
DATE_FORMAT('2023-01-25', '%b') AS "1",
DATE_FORMAT('2023-02-25', '%b') AS "2",
DATE_FORMAT('2023-03-25', '%b') AS "3",
DATE_FORMAT('2023-04-25', '%b') AS "4",
DATE_FORMAT('2023-05-25', '%b') AS "5",
DATE_FORMAT('2023-06-25', '%b') AS "6",
DATE_FORMAT('2023-07-25', '%b') AS "7",
DATE_FORMAT('2023-08-25', '%b') AS "8",
DATE_FORMAT('2023-09-25', '%b') AS "9",
DATE_FORMAT('2023-10-25', '%b') AS "10",
DATE_FORMAT('2023-11-25', '%b') AS "11",
DATE_FORMAT('2023-12-25', '%b') AS "12";
Resultado (usando saída vertical):
1: Jan 2: Feb 3: Mar 4: Apr 5: May 6: Jun 7: Jul 8: Aug 9: Sep 10: Oct 11: Nov 12: Dec
Você também pode retornar outras unidades de data e hora, mas este artigo é especificamente sobre como retornar o nome curto do mês. Veja MariaDB Format Strings para uma lista de especificadores de formato que podem ser usados com
DATE_FORMAT()
. Outras abordagens
Existem outras maneiras de obter o nome curto do mês de uma data que envolve cortar a primeira parte do mês.
No entanto, isso pode ser mais propenso a erros do que o método acima (além de ser mais complicado). Você pode obter alguns resultados inesperados ao usar esse método, especialmente ao trabalhar com idiomas diferentes.
Aqui estão alguns exemplos para demonstrar o que quero dizer.
Em vez de usar o
%b
especificador de formato como fizemos no exemplo anterior, podemos usar o %M
especificador de formato para retornar o nome completo do mês e, em seguida, retornar abreviar esse resultado com uma função como LEFT()
. Exemplo:
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Short;
Resultado:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Alternativamente, poderíamos usar uma função como
CAST()
para converter para um tipo de dados com apenas três caracteres, como este:SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
CAST(DATE_FORMAT('2023-10-25', '%M') AS CHAR(3)) AS Short;
Resultado:
+---------+-------+ | Full | Short | +---------+-------+ | October | Oct | +---------+-------+
Isso funciona bem ao trabalhar com o idioma inglês (e talvez alguns outros idiomas). Mas vamos ver o que acontece quando mudamos para um idioma diferente – digamos, tailandês:
SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M', 'th_TH'), 3) AS Short;
Resultado:
+--------------------+-----------+ | Full | Short | +--------------------+-----------+ | ตุลาคม | ตุล | +--------------------+-----------+
No entanto, aqui está o que acontece quando usamos o
%b
especificador de formato para retornar o nome curto do mês:SELECT
DATE_FORMAT('2023-10-25', '%M', 'th_TH') AS Full,
DATE_FORMAT('2023-10-25', '%b', 'th_TH') AS Short;
Resultado:
+--------------------+----------+ | Full | Short | +--------------------+----------+ | ตุลาคม | ต.ค. | +--------------------+----------+
Ele retorna um resultado diferente.
Então eu recomendo usar o
%b
especificador de formato sempre que possível.