No SQL Server, você pode usar o
MONTH()
função para converter um nome de mês para seu número correspondente. Exemplo
Aqui está um exemplo de conversão de um nome de mês para o número do mês.
SELECT MONTH('September' + '1,1');
Resultado:
9
O que estou fazendo aqui é basicamente fabricar uma “data” (que inclui meu mês especificado) para que o SQL Server não gere um erro ao usar o
MONTH()
função sem uma data válida. Esta função aceita qualquer expressão que possa ser resolvida em um tempo , data , pequena data e hora , datahora , datahora2 , ou deslocamento de data e hora valor. Pode ser uma expressão, expressão de coluna, variável definida pelo usuário ou literal de string.
Mais "Encontro"
Você também pode fornecer um argumento mais “semelhante a uma data” fazendo algo assim:
SELECT MONTH('September' + ' 01, 1900');
Resultado:
9
Dia e ano atuais
Ou se preferir usar o dia e ano atuais, você pode fazer algo assim:
SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));
Resultado:
9
Só para ficar claro, a menos que o mês especificado seja o mesmo que o mês atual, você terminará com uma data diferente da data atual.
Aqui está um exemplo para ilustrar o que quero dizer:
SELECT
FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];
Resultado:
+----------------+--------------------+----------------+ | Today | Modified | Month Number | |----------------+--------------------+----------------| | March 22, 2020 | September 22, 2020 | 9 | +----------------+--------------------+----------------+
Executei esta consulta em 22 de março de 2020, mas a data modificada é 22 de setembro de 2020.
Independentemente disso, o número correto do mês é retornado quando usamos
MONTH()
.