SET DATEFIRST (Transact-SQL)
Imposta il primo giorno della settimana su un numero compreso tra 1 e 7.
Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL).
Si applica a: SQL Server (SQL Server 2008 tramite versione corrente), Database SQL di Windows Azure (versione iniziale tramite versione corrente). |
Convenzioni della sintassi Transact-SQL
Sintassi
SET DATEFIRST { number | @number_var }
Argomenti
number | **@**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, Stati Uniti Inglese)
Domenica
Osservazioni
Per visualizzare l'impostazione corrente di SET DATEFIRST, utilizzare 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.
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