No SQL Server, você pode usar o comando
DAY()
função para retornar a parte “dia” de uma data. Esta função retorna um inteiro que representa o dia do mês (não o dia da semana). Abaixo estão exemplos de como usar esta função.
Sintaxe
A sintaxe fica assim:
DAY ( 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', DAY(SYSDATETIME()) AS 'Day';
Resultado:
+-----------------------------+-------+ | Date | Day | |-----------------------------+-------| | 2018-06-18 00:20:22.1284540 | 18 | +-----------------------------+-------+
Portanto, o
DAY()
função conseguiu extrair o dia 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 DAY('2019-01-07') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
E aqui está um exemplo em que a data é fornecida em um formato diferente:
SELECT DAY('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
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 DAY('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
br_inglês
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
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 para us_English , que define implicitamente o formato de data como myy .
SET LANGUAGE us_English; SELECT DAY('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 1 | +----------+
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 DAY('07/01/2017') AS Result;
Resultado:
+----------+ | Result | |----------| | 7 | +----------+
Retorne o nome do dia
Se você precisar retornar o nome do dia (em oposição ao número do dia), consulte 3 maneiras de obter o nome do dia de uma data no SQL Server.