sql >> Database teknologi >  >> RDS >> Sqlserver

SET DATEFIRST – Indstil den første dag i ugen i SQL Server

I SQL Server kan du bruge SET DATEFIRST for at indstille den første dag i ugen.

Ugens første dag kan være anderledes afhængigt af det sprog, der bruges. For eksempel er standarden for us_English 7 (søndag), hvorimod standarden for Deutsch (tysk) er 1 (mandag).

Denne artikel viser, hvordan du ændrer den første dag i ugen uden at ændre sproget.

Syntaks

For det første går syntaksen sådan her:

SET DATEFIRST { number | @number_var }

Hvor number | @number_var er et heltal, der angiver den første dag i ugen. Dette er et tal mellem 1 og 7.

Følgende tabel viser kortlægningen mellem nummeret og ugedagen.

Værdi Ugens første dag er
1 mandag
2 tirsdag
3 onsdag
4 Torsdag
5 fredag
6 Lørdag
7 søndag

Så en værdi på f.eks. 3 , ville angive onsdag som den første dag i ugen.

Eksempel 1 – Grundlæggende brug

Her er et eksempel til at demonstrere syntaksen.

SET DATEFIRST 1;

Dette indstiller den første dag i ugen til mandag (vi kan se fra ovenstående diagram, at en værdi på 1 kort til mandag).

Vi kan se den aktuelle indstilling ved at bruge @@DATEFIRST for at returnere den aktuelle værdi af SET DATEFIRST .

SELECT @@DATEFIRST AS 'Result';

Resultat:

+----------+
| Result   |
|----------|
| 1        |
+----------+

Eksempel 2 – Tilsidesæt sprogindstillingen

Dette eksempel viser, hvordan SET DATEFIRST indstilling passer til sprogindstillingerne.

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, at sproget forbliver det samme, men den første dag i ugen er ændret.

Dette eksempel bruger SET LANGUAGE for at indstille sproget for den aktuelle session (der som nævnt bruges til at bestemme den første dag i ugen). Sprogindstillingen sætter også implicit datoformatet. Hvis det er nødvendigt, kan du bruge SET DATEFORMAT for at tilsidesætte denne indstilling for datoformatet.

For at se hvad DATEFIRST indstillinger er knyttet til hvert sprog. Her er en liste over alle sprog og tilknyttede datoformater i SQL Server 2017.

Du kan også bruge sp_helplanguage gemt procedure for at returnere denne liste. For at gøre dette skal du se Sådan finder du de datoformater, der bruges til et bestemt sprog i SQL Server (T-SQL).


  1. Optimer GROUP BY-forespørgsel for at hente seneste række pr. bruger

  2. MySQL vælg sætning med CASE eller IF ELSEIF? Ikke sikker på, hvordan man får resultatet

  3. Sådan importeres MySQL-databaser i kommandolinjen

  4. Bliv tændt af Apache Spark – Del 2