I SQL Server kan du använda SET DATEFIRST
för att ställa in den första dagen i veckan.
Veckans första dag kan variera beroende på vilket språk som används. Till exempel är standardinställningen för us_english 7 (söndag), medan standarden för Deutsch (tyska) är 1 (måndag).
Den här artikeln visar hur du ändrar den första dagen i veckan utan att ändra språk.
Syntax
Först ser syntaxen ut så här:
SET DATEFIRST { number | @number_var }
Där number | @number_var
är ett heltal som anger den första dagen i veckan. Detta är ett tal mellan 1 och 7.
Följande tabell visar mappningen mellan numret och veckodagen.
Värde | Veckans första dag är |
---|---|
1 | måndag |
2 | Tisdag |
3 | onsdag |
4 | Torsdag |
5 | Fredag |
6 | Lördag |
7 | Söndag |
Så ett värde på säg, 3
, skulle ange onsdag som den första dagen i veckan.
Exempel 1 – Grundläggande användning
Här är ett exempel för att demonstrera syntaxen.
SET DATEFIRST 1;
Detta ställer in den första veckodagen till måndag (vi kan se från diagrammet ovan att ett värde på 1
kartor till måndag).
Vi kan se den aktuella inställningen genom att använda @@DATEFIRST
för att returnera det aktuella värdet för SET DATEFIRST
.
SELECT @@DATEFIRST AS 'Result';
Resultat:
+----------+ | Result | |----------| | 1 | +----------+
Exempel 2 – Åsidosätt språkinställningen
Det här exemplet visar hur SET DATEFIRST
inställningen passar in med språkinställningarna.
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';
Resultat:
+-------------------+--------------------+ | LANGUAGE Before | DATEFIRST Before | |-------------------+--------------------| | us_english | 7 | +-------------------+--------------------+ Changed language setting to us_english. +------------------+-------------------+ | LANGUAGE After | DATEFIRST After | |------------------+-------------------| | us_english | 1 | +------------------+-------------------+
Så vi kan se att språket förblir detsamma, men den första dagen i veckan har ändrats.
Det här exemplet använder SET LANGUAGE
för att ställa in språket för den aktuella sessionen (som som nämnts används för att bestämma den första dagen i veckan). Språkinställningen ställer också implicit in datumformatet. Om det behövs kan du använda SET DATEFORMAT
för att åsidosätta denna inställning för datumformatet.
För att se vad DATEFIRST
inställningar mappas till varje språk, här är en lista över alla språk och associerade datumformat i SQL Server 2017.
Du kan också använda sp_helplanguage
lagrad procedur för att returnera den listan. För att göra detta, se Hur du hittar de datumformat som används för ett visst språk i SQL Server (T-SQL).