No MySQL, você pode usar o
DATE_FORMAT()
função com o %b
especificador de formato para retornar o nome curto do mês. Por exemplo, você pode retornar Jan
ou Feb
em vez de January
ou Feb
. Exemplo
SELECT DATE_FORMAT('2035-01-18', '%b');
Resultado:
Jan
Aqui está outro exemplo que percorre os vários meses do ano:
SELECT
DATE_FORMAT('2035-01-18', '%b') AS "1",
DATE_FORMAT('2035-02-18', '%b') AS "2",
DATE_FORMAT('2035-03-18', '%b') AS "3",
DATE_FORMAT('2035-04-18', '%b') AS "4",
DATE_FORMAT('2035-05-18', '%b') AS "5",
DATE_FORMAT('2035-06-18', '%b') AS "6",
DATE_FORMAT('2035-07-18', '%b') AS "7",
DATE_FORMAT('2035-08-18', '%b') AS "8",
DATE_FORMAT('2035-09-18', '%b') AS "9",
DATE_FORMAT('2035-10-18', '%b') AS "10",
DATE_FORMAT('2035-11-18', '%b') AS "11",
DATE_FORMAT('2035-12-18', '%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 é sobre como retornar o nome curto do mês.
Veja MySQL Date Format Specifiers para uma lista de especificadores de formato que podem ser usados com
DATE_FORMAT()
. Encurtar o nome completo do mês
Se você precisar encurtar um nome de mês completo, sempre poderá usar uma função como
LEFT()
para retornar apenas os três primeiros caracteres (ou quantos você precisar). Exemplo:
SELECT
DATE_FORMAT('2035-09-18', '%M') AS Full,
LEFT(DATE_FORMAT('2035-09-18', '%M'), 3) AS Short;
Resultado:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+
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('2035-09-18', '%M') AS Full,
CAST(DATE_FORMAT('2035-09-18', '%M') AS CHAR(3)) AS Short;
Resultado:
+-----------+-------+ | Full | Short | +-----------+-------+ | September | Sep | +-----------+-------+ 1 row in set, 1 warning (0.00 sec)
Nesse caso, recebemos um aviso porque estamos truncando um valor mais longo:
show warnings;
Resultado:
+---------+------+------------------------------------------------+ | Level | Code | Message | +---------+------+------------------------------------------------+ | Warning | 1292 | Truncated incorrect CHAR(3) value: 'September' | +---------+------+------------------------------------------------+
Encurtar o nome do mês como este pode ser bom ao trabalhar com idiomas como o inglês, mas lembre-se de que isso pode não retornar o mesmo resultado ao usar o
%b
especificador de formato. Para demonstrar o que quero dizer, aqui está o que acontece quando mudo minha sessão para usar o idioma tailandês:
SET lc_time_names = 'th_TH';
SELECT
DATE_FORMAT('2023-10-25', '%M') AS Full,
LEFT(DATE_FORMAT('2023-10-25', '%M'), 3) AS Truncated,
DATE_FORMAT('2023-10-25', '%b') AS Short;
Resultado:
+--------------------+-----------+----------+ | Full | Truncated | Short | +--------------------+-----------+----------+ | ตุลาคม | ตุล | ต.ค. | +--------------------+-----------+----------+
Truncar o nome completo do mês retorna um resultado diferente de usar o
%b
especificador de formato para retornar o nome curto do mês.