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

SET DATEFIRST – Imposta il primo giorno della settimana in SQL Server

In SQL Server puoi utilizzare SET DATEFIRST per impostare il primo giorno della settimana.

Il primo giorno della settimana può essere diverso, a seconda della lingua utilizzata. Ad esempio, l'impostazione predefinita per us_English è 7 (domenica), mentre il valore predefinito per Deutsch (tedesco) è 1 (lunedì).

Questo articolo mostra come cambiare il primo giorno della settimana senza cambiare la lingua.

Sintassi

Innanzitutto, la sintassi è questa:

SET DATEFIRST { number | @number_var }

Dove number | @number_var è un numero intero che indica il primo giorno della settimana. Questo è un numero compreso tra 1 e 7.

La tabella seguente mostra la mappatura tra il numero e il giorno della settimana.

Valore Il primo giorno della settimana è
1 lunedì
2 Martedì
3 Mercoledì
4 giovedì
5 venerdì
6 Sabato
7 Domenica

Quindi un valore di diciamo, 3 , imposterebbe mercoledì come primo giorno della settimana.

Esempio 1 – Utilizzo di base

Ecco un esempio per dimostrare la sintassi.

SET DATEFIRST 1;

Questo imposta il primo giorno della settimana su lunedì (possiamo vedere dal grafico sopra che un valore di 1 mappe a lunedì).

Possiamo visualizzare l'impostazione corrente utilizzando @@DATEFIRST per restituire il valore corrente di SET DATEFIRST .

SELECT @@DATEFIRST AS 'Result';

Risultato:

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

Esempio 2:ignorare l'impostazione della lingua

Questo esempio mostra come SET DATEFIRST l'impostazione si adatta alle impostazioni della lingua.

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';

Risultato:

+-------------------+--------------------+
| LANGUAGE Before   | DATEFIRST Before   |
|-------------------+--------------------|
| us_english        | 7                  |
+-------------------+--------------------+
Changed language setting to us_english.
+------------------+-------------------+
| LANGUAGE After   | DATEFIRST After   |
|------------------+-------------------|
| us_english       | 1                 |
+------------------+-------------------+

Quindi possiamo vedere che la lingua rimane la stessa, ma il primo giorno della settimana è cambiato.

Questo esempio utilizza SET LANGUAGE per impostare la lingua della sessione corrente (che, come detto, viene utilizzata per determinare il primo giorno della settimana). L'impostazione della lingua imposta anche implicitamente il formato della data. Se necessario, puoi utilizzare SET DATEFORMAT per sovrascrivere questa impostazione per il formato della data.

Per vedere cosa DATEFIRST le impostazioni vengono mappate a ciascuna lingua, ecco un Elenco di tutte le lingue e i formati di data associati in SQL Server 2017.

Puoi anche usare sp_helplanguage stored procedure per restituire tale elenco. A tale scopo, consulta Come trovare i formati di data utilizzati per una lingua specifica in SQL Server (T-SQL).