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

SET DATEFIRST – Defina o primeiro dia da semana no SQL Server


No SQL Server, você pode usar SET DATEFIRST para definir o primeiro dia da semana.

O primeiro dia da semana pode ser diferente, dependendo do idioma usado. Por exemplo, o padrão para us_English é 7 (domingo), enquanto o padrão para Deutsch (alemão) é 1 (Segunda-feira).

Este artigo demonstra como alterar o primeiro dia da semana sem alterar o idioma.


Sintaxe


Primeiro, a sintaxe é assim:
SET DATEFIRST { number | @number_var }

Onde number | @number_var é um número inteiro que indica o primeiro dia da semana. Este é um número entre 1 e 7.

A tabela a seguir mostra o mapeamento entre o número e o dia da semana.
Valor O primeiro dia da semana é
1 Segunda-feira
2 terça-feira
3 Quarta-feira
4 quinta-feira
5 Sexta-feira
6 Sábado
7 Domingo

Então, um valor de, digamos, 3 , definiria quarta-feira como o primeiro dia da semana.

Exemplo 1 – Uso básico


Aqui está um exemplo para demonstrar a sintaxe.
SET DATEFIRST 1;

Isso define o primeiro dia da semana como segunda-feira (podemos ver no gráfico acima que um valor de 1 mapas para segunda-feira).

Podemos visualizar a configuração atual usando @@DATEFIRST para retornar o valor atual de SET DATEFIRST .
SELECT @@DATEFIRST AS 'Result';

Resultado:
+----------+
| Result   |
|----------|
| 1        |
+----------+

Exemplo 2 – Substituir a configuração de idioma


Este exemplo demonstra como o SET DATEFIRST configuração se encaixa com as configurações de idioma.
SET LANGUAGE us_english;  
SELECT 
    @@LANGUAGE AS 'LANGUAGE Before',
    @@DATEFIRST AS 'DATEFIRST Before';

SET DATEFIRST 1;
SELECT
    @@LANGUAGE AS 'LANGUAGE After',
    @@DATEFIRST AS 'DATEFIRST After';

Resultado:
+-------------------+--------------------+
| LANGUAGE Before   | DATEFIRST Before   |
|-------------------+--------------------|
| us_english        | 7                  |
+-------------------+--------------------+
Changed language setting to us_english.
+------------------+-------------------+
| LANGUAGE After   | DATEFIRST After   |
|------------------+-------------------|
| us_english       | 1                 |
+------------------+-------------------+

Então podemos ver que o idioma continua o mesmo, mas o primeiro dia da semana mudou.

Este exemplo usa SET LANGUAGE para definir o idioma da sessão atual (que, conforme mencionado, é usado para determinar o primeiro dia da semana). A configuração de idioma também define implicitamente o formato de data. Se necessário, você pode usar SET DATEFORMAT para substituir essa configuração para o formato de data.

Para ver o que DATEFIRST configurações mapeiam para cada idioma, aqui está uma lista de todos os idiomas e formatos de data associados no SQL Server 2017.

Você também pode usar o sp_helplanguage procedimento armazenado para retornar essa lista. Para fazer isso, consulte Como encontrar os formatos de data usados ​​para um idioma específico no SQL Server (T-SQL).