No SQL Server, você pode usar o comando
MONTH()
função para retornar a parte “mês” de uma data. Isso é retornado como um número inteiro (não o nome do mês). Abaixo estão exemplos de como usar esta função.
Sintaxe
A sintaxe fica assim:
MONTH ( date )
Onde
date
é uma expressão que resolve para um dos seguintes tipos de dados:- data
- datahora
- deslocamento de data e hora
- datahora2
- pequena data e hora
- hora
Pode ser uma expressão de coluna, expressão, literal de string ou variável definida pelo usuário.
Exemplo
Veja um exemplo básico de como funciona:
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Resultado:
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Portanto, o
MONTH()
função conseguiu extrair o mês do datetime2 valor (que foi retornado pelo SYSDATETIME()
função). Data fornecida como um literal de string
Aqui está um exemplo em que a data é fornecida como uma string literal.
SELECT MONTH('2019-01-07') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
E aqui está um exemplo em que a data é fornecida em um formato diferente:
SELECT MONTH('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
No entanto, geralmente é melhor evitar o uso de datas nesses formatos. Se você precisar fazer isso, precisará estar atento às configurações de idioma e/ou às configurações de formato de data da sessão atual.
Configurações de idioma
A saída do exemplo anterior dependerá das configurações de idioma e/ou configurações de formato de data da sessão atual.
Quando configuramos o idioma, o formato de data é configurado implicitamente ao mesmo tempo.
Veja o que acontece quando fornecemos o mesmo argumento de data em dois ambientes de linguagem diferentes.
Britânico
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
br_inglês
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
Configurações de formato de data
As configurações de formato de data podem substituir as configurações de idioma, portanto, você também precisa estar ciente dessa configuração. Por exemplo, poderíamos estar usando us_English para nosso idioma (que tem um formato de data padrão de mdy ), mas poderíamos substituir o formato de data para dmy .
Aqui está um exemplo:
us_English – Formato de data padrão
Aqui, definimos o idioma como us_English , que define implicitamente o formato de data como myy .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
us_English – Substituir formato de data
Aqui, definimos o idioma para us_English (que define implicitamente o formato de data), mas então definimos explicitamente o formato de data como dmy . Isso substitui o formato de data que foi definido implicitamente quando definimos o idioma.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
Retorne o nome do mês
Se você precisar retornar o nome do mês (em vez do número do mês), consulte 3 maneiras de obter o nome do mês de uma data no SQL Server.