Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

5 maneiras de obter o nome curto do mês de uma data no SQL Server


À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