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

3 maneiras de obter o nome do mês de uma data no SQL Server (T-SQL)


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.