Ao usar o SQL Server, você tem algumas opções diferentes quando precisa retornar o nome do mês de uma data usando T-SQL. Por nome do mês, não estou falando do número do mês (como 07 ). Estou falando do nome completo do mês (como julho ).
Por exemplo, quando a data é 2018-07-01 , você quer julho ser devolvido.
Este artigo apresenta três maneiras de retornar o nome do mês de uma data no SQL Server usando T-SQL.
A função FORMAT()
O
FORMAT()
A função retorna um valor formatado no formato especificado e cultura opcional. Você pode usá-lo para retornar o nome do mês de uma data. Aqui está um exemplo:
DECLARE @date datetime2 = '2018-07-01'; SELECT FORMAT(@date, 'MMMM') AS Result;
Resultado:
+----------+ | Result | |----------| | July | +----------+
Neste caso, fornecemos uma string de formato de
MMMM
que é uma string de formato de data e hora personalizada para retornar o nome do mês. A coisa boa sobre o
FORMAT()
função é que ela aceita um argumento opcional que permite especificar a cultura a ser usada. aqui estão alguns exemplos:
DECLARE @date datetime2 = '2018-07-01'; SELECT FORMAT(@date, 'MMMM', 'en-US') AS 'en-US', FORMAT(@date, 'MMMM', 'es-es') AS 'es-es', FORMAT(@date, 'MMMM', 'de-de') AS 'de-de', FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';
Resultado:
+---------+---------+---------+---------+ | en-US | es-es | de-de | zh-cn | |---------+---------+---------+---------| | July | julio | Juli | 七月 | +---------+---------+---------+---------+
Se você não fornecer o argumento de cultura, o idioma da sessão atual será usado. Se você não tiver certeza de qual idioma a sessão atual está usando, aqui estão 3 maneiras de obter o idioma da sessão atual. Se você achar que precisa alterar o idioma, veja como defini-lo para outro idioma.
Você também pode usar o
FORMAT()
função para obter o nome do mês abreviado. Para fazer isso, basta usar MMM
(três M
s em vez de quatro). Aqui está um exemplo que retorna o nome abreviado do mês e o nome completo do mês:
DECLARE @date datetime2(0) = '2028-09-01'; SELECT FORMAT(@date, 'MMM', 'en-US') 'en-US', FORMAT(@date, 'MMM', 'es-es') 'es-es', FORMAT(@date, 'MMM', 'it') 'it' UNION ALL SELECT FORMAT(@date, 'MMMM', 'en-US'), FORMAT(@date, 'MMMM', 'es-es'), FORMAT(@date, 'MMMM', 'it');
Resultado:
+-----------+------------+-----------+ | en-US | es-es | it | |-----------+------------+-----------| | Sep | sep. | set | | September | septiembre | settembre | +-----------+------------+-----------+
Esta é apenas uma das muitas maneiras de obter o nome abreviado do mês de uma data (embora esse método seja sem dúvida o melhor). Há pelo menos mais quatro maneiras de retornar o nome abreviado do mês de uma data.
A função DATENAME()
O
DATENAME()
função é semelhante à DATEPART()
função, exceto que ela retorna o nome da parte da data especificada (mas apenas quando um nome for aplicável). Isso significa que ele retorna o nome do dia da semana ou o nome do mês, se for o que você precisa. Veja como obter o nome do mês com esta função:
DECLARE @date datetime2 = '2018-07-01'; SELECT DATENAME(month, @date) AS Result;
Resultado:
+----------+ | Result | |----------| | July | +----------+
A função escalar ODBC MONTHNAME()
Existe uma função escalar ODBC especificamente para retornar o nome do mês de uma data. Seu nome é
MONTHNAME()
, e fica assim:DECLARE @date datetime2 = '2018-07-01'; SELECT {fn MONTHNAME(@date)} AS Result;
Resultado:
+----------+ | Result | |----------| | July | +----------+
Ao usar funções escalares ODBC em T-SQL, elas são cercadas por chaves (
{}
) e o nome da função é prefixado com fn
. Se você precisar obter o nome curto do mês, consulte 5 maneiras de obter o nome curto do mês de uma data no SQL Server.