SET DATEFIRST (Transact-SQL)

Si applica a:SQL ServerDatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsPiattaforma di strumenti analitici (PDW)

Imposta il primo giorno della settimana su un numero compreso tra 1 e 7.

Per una panoramica di tutte le funzioni e i tipi di dati di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

Sintassi per SQL Server e per il database SQL di Azure

SET DATEFIRST { number | @number_var }   

Sintassi per Azure Synapse Analytics e Parallel Data Warehouse

SET DATEFIRST 7 ;  

Nota

Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

numero | @number_var

Valore intero che indica il primo giorno della settimana. Può essere uno dei valori seguenti.

Valore Primo giorno della settimana
1 lunedì
2 Martedì
3 mercoledì
4 giovedì
5 Venerdì
6 Sabato
7 (impostazione predefinita, inglese statunitense) Domenica

Osservazioni:

Per visualizzare l'impostazione corrente di SET DATEFIRST, usare la funzione @@DATEFIRST.

L'opzione SET DATEFIRST viene impostata in fase di esecuzione, non in fase di analisi.

La specifica di SET DATEFIRST non influisce su DATEDIFF. In DATEDIFF viene utilizzata sempre la domenica come primo giorno della settimana per garantire che la funzione sia deterministica.

Analogamente a tutte le istruzioni edizione Standard T, edizione Standard T DATEFIRST influisce sulla sessione corrente.

Autorizzazioni

È richiesta l'appartenenza al ruolo public .

Esempi

In questo esempio viene visualizzato il giorno della settimana in base a un valore di data e vengono illustrati gli effetti della modifica dell'opzione DATEFIRST.

-- SET DATEFIRST to U.S. English default value of 7.  
SET DATEFIRST 7;  
  
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate  
    ,DATEPART(dw, '1999-1-1') AS DayOfWeek;  
-- January 1, 1999 is a Friday. Because the U.S. English default   
-- specifies Sunday as the first day of the week, DATEPART of 1999-1-1  
-- (Friday) yields a value of 6, because Friday is the sixth day of the   
-- week when you start with Sunday as day 1.  
  
SET DATEFIRST 3;  
-- Because Wednesday is now considered the first day of the week,  
-- DATEPART now shows that 1999-1-1 (a Friday) is the third day of the   
-- week. The following DATEPART function should return a value of 3.  
SELECT CAST('1999-1-1' AS datetime2) AS SelectDate  
    ,DATEPART(dw, '1999-1-1') AS DayOfWeek;  
GO