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

Converter um número de mês para o nome do mês no SQL Server (T-SQL)


Você pode usar o código T-SQL abaixo para converter um número de mês em seu nome correspondente no SQL Server.

Isso é para momentos em que você não tem a data completa – quando tudo que você tem é o número do mês. Se você faz tem a data, então veja como obter o nome do mês de uma data.

Exemplo


Você pode obter o nome do mês de seu número correspondente usando o DATENAME() função em conjunto com DATEADD() .

Aqui está um exemplo que usa o mês 10 (outubro):
SELECT DATENAME( 
    month, 
    DATEADD( month , 10, -1 )
    );

Resultado:
October

Explicação do Código


Se você está se perguntando por que há um -1 no código acima, é porque a data base é 1900-01-01 (bem, 1900-01-01 00:00:00.000 para ser mais preciso).

Se somarmos 10 a 01, obtemos 11, que é novembro (o mês errado). Portanto, precisamos subtrair por 1.

O exemplo a seguir deve ilustrar isso melhor do que minhas palavras. Aqui estão vários DATEADD() valores que são retornados, dependendo do que eu uso como terceiro argumento.
SELECT 
  DATEADD( month, 0, 0 ) AS [Base Date],
  DATEADD( month, 10, 0 ) AS [Add 10],
  DATEADD( month, 10, -1 ) AS [Subtract 1];

Resultado:
 +-------------------------+-------------------------+-------------------------+
 | Base Date               | Add 10                  | Subtract 1              |
 |-------------------------+-------------------------+-------------------------|
 | 1900-01-01 00:00:00.000 | 1900-11-01 00:00:00.000 | 1900-10-31 00:00:00.000 |
 +-------------------------+-------------------------+-------------------------+ 

Então a terceira opção nos dá o número do mês correto, e então é uma simples questão de usar DATENAME() para convertê-lo no nome do mês.

Uma alternativa:FORMAT()


Se você não gosta de DATENAME() função, você pode trocá-lo pelo FORMAT() função em vez disso. O mesmo conceito se aplica.
SELECT FORMAT( 
    DATEADD( month , 10, -1 ),
    'MMMM'
    );

Resultado:
October