SET DATEFIRST (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Affecte au premier jour de la semaine un nombre allant de 1 à 7.

Pour obtenir une vue d’ensemble de tous les types de données et fonctions de date et d’heure Transact-SQL, consultez Types de données et fonctions de date et d’heure (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

Syntaxe pour SQL Server et Azure SQL Database

SET DATEFIRST { number | @number_var }   

Syntaxe pour Azure Synapse Analytics et Parallel Data Warehouse

SET DATEFIRST 7 ;  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

nombre | @number_var

Nombre entier indiquant le premier jour de la semaine. Il peut avoir l’une des valeurs suivantes.

Valeur Le premier jour de la semaine est
1 Lundi
2 Mardi
3 Mercredi
4 Jeudi
5 Vendredi
6 Samedi
7 (par défaut, anglais américain) Dimanche

Remarques

Pour afficher la valeur actuelle de SET DATEFIRST, utilisez la fonction@@DATEFIRST.

L'option SET DATEFIRST est définie lors de l'exécution, et non pas durant l'analyse.

La spécification SET DATEFIRST n'a aucun effet sur DATEDIFF. DATEDIFF utilise toujours Dimanche comme le premier jour de la semaine pour que la fonction soit déterministe.

Comme toutes les instructions SET, SET DATEFIRST affecte la session active.

Autorisations

Nécessite l'appartenance au rôle public .

Exemples

L'exemple suivant affiche le jour de la semaine pour une valeur date et ainsi que les effets de la modification du paramètre 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