SQL Server has a DATEFIRST
setting that determines the first day of the week for date calculations.
SELECT DATENAME(weekday, '2025-04-23') AS WeekdayName -- Wednesday
SET DATEFIRST 7 -- Sunday
SELECT DATEPART(weekday, '2025-04-23') AS WeekdayNumber -- 4
SET DATEFIRST 1 -- Monday
SELECT DATEPART(weekday, '2025-04-23') AS WeekdayNumber -- 3
According to Microsoft's documentation, the default value of DATEFIRST
in U.S. English is 7 (Sunday).
If SQL Server is configured with a non-English or non-US language, will the default value of DATEFIRST
be something other than 7? If so, how do I check the default values for different languages?
Yes, they are different.
You can get the current session's setting from @@DATEFIRST
. If you want to see what the different languages default to, query sys.syslanguages
:
SELECT datefirst,
name,
alias
FROM sys.syslanguages;
In SQL Server 2022, this gives the following results:
datefirst | name | alias |
---|---|---|
7 | us_english | English |
1 | Deutsch | German |
1 | Français | French |
7 | 日本語 | Japanese |
1 | Dansk | Danish |
1 | Español | Spanish |
1 | Italiano | Italian |
1 | Nederlands | Dutch |
1 | Norsk | Norwegian |
7 | Português | Portuguese |
1 | Suomi | Finnish |
1 | Svenska | Swedish |
1 | čeština | Czech |
1 | magyar | Hungarian |
1 | polski | Polish |
1 | română | Romanian |
1 | hrvatski | Croatian |
1 | slovenčina | Slovak |
1 | slovenski | Slovenian |
1 | ελληνικά | Greek |
1 | български | Bulgarian |
1 | русский | Russian |
1 | Türkçe | Turkish |
1 | British | British English |
1 | eesti | Estonian |
1 | latviešu | Latvian |
1 | lietuvių | Lithuanian |
7 | Português (Brasil) | Brazilian |
7 | 繁體中文 | Traditional Chinese |
7 | 한국어 | Korean |
7 | 简体中文 | Simplified Chinese |
1 | Arabic | Arabic |
7 | ไทย | Thai |
1 | norsk (bokmål) | Bokmål |