sql >> Databasteknik >  >> RDS >> Sqlserver

SET DATEFIRST – Ställ in den första dagen i veckan i SQL Server

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


  1. Det gick inte att skapa den begärda tjänsten [org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]

  2. Createuser:kunde inte ansluta till databasen postgres:FATAL:rollen tom finns inte

  3. Hur man importerar MySQL-databaser på kommandoraden

  4. Emulera MySQL LIMIT-satsen i Microsoft SQL Server 2000