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).