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.