Às vezes, ao trabalhar com o SQL Server (ou qualquer outro DBMS), você precisa retornar o nome abreviado por um mês. Com isso quero dizer a abreviação de 3 letras de um mês. Por exemplo, você precisa de “Dez” em vez de “Dezembro”.
Aqui estão quatro maneiras de extrair o nome do mês abreviado de uma data no SQL Server.
A função FORMAT()
O
FORMAT()
A função está disponível desde o SQL Server 2012 e é a maneira mais concisa de retornar o mês como uma abreviação de 3 letras. Veja um exemplo de como funciona:
DECLARE @date datetime2 = '2000-01-01'; SELECT FORMAT(@date, 'MMM') AS 'FORMAT';
Resultado:
FORMAT ------ Jan
A primeira linha simplesmente declara uma variável e atribui uma data a ela. A segunda linha é onde retornamos o nome curto do mês a partir da data.
As funções CAST() e DATENAME()
Esta opção converte a data como
CHAR(3)
, cortando assim quaisquer caracteres que seguem os três primeiros. Aqui está um exemplo:
DECLARE @date datetime2 = '2000-01-01'; SELECT CAST(DATENAME(month, @date) AS CHAR(3)) AS 'CAST/DATENAME';
Resultado:
CAST/DATENAME ------------- Jan
As funções LEFT() e DATENAME()
Esta opção é semelhante à anterior, exceto que usa o
LEFT()
função para tirar os 3 caracteres mais à esquerda da data. Exemplo:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(DATENAME(month, @date), 3) AS 'LEFT/DATENAME';
Resultado:
LEFT/DATENAME ------------- Jan
As funções LEFT() e CONVERT()
Esta opção converte a data em varchar e, em seguida, recebe os três primeiros caracteres.
Exemplo:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT(CONVERT(varchar, @date, 100), 3) AS 'LEFT/CONVERT';
Resultado:
LEFT/CONVERT ------------ Jan
Neste exemplo, o
100
argumento estiliza a data para que fique no seguinte formato:mon dd yyyy hh:miAM (ou PM) . Então, no nosso caso, a data tem o estilo 1 de janeiro de 2000 00:00 . A partir daí, é simplesmente uma questão de cortar as três primeiras letras com o
LEFT()
função. As funções LEFT() e MONTHNAME()
Esta opção usa o
MONTHNAME()
Função escalar ODBC para retornar o nome do mês. E como nos dois exemplos anteriores, simplesmente extraímos as três primeiras letras do nome desse mês. Exemplo:
DECLARE @date datetime2 = '2000-01-01'; SELECT LEFT({fn MONTHNAME(@date)}, 3) AS 'LEFT/MONTHNAME';
Resultado:
LEFT/MONTHNAME -------------- Jan