Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

SET DATEFIRST - Définir le premier jour de la semaine dans SQL Server

Dans SQL Server, vous pouvez utiliser SET DATEFIRST pour définir le premier jour de la semaine.

Le premier jour de la semaine peut être différent selon la langue utilisée. Par exemple, la valeur par défaut pour us_English est 7 (dimanche), alors que la valeur par défaut pour Deutsch (allemand) est 1 (Lundi).

Cet article montre comment changer le premier jour de la semaine sans changer la langue.

Syntaxe

Tout d'abord, la syntaxe ressemble à ceci :

SET DATEFIRST { number | @number_var }

number | @number_var est un entier qui indique le premier jour de la semaine. Il s'agit d'un nombre compris entre 1 et 7.

Le tableau suivant montre la correspondance entre le nombre et le jour de la semaine.

Valeur Le premier jour de la semaine est
1 Lundi
2 mardi
3 Mercredi
4 jeudi
5 vendredi
6 Samedi
7 dimanche

Donc une valeur de, disons, 3 , définirait le mercredi comme premier jour de la semaine.

Exemple 1 - Utilisation de base

Voici un exemple pour illustrer la syntaxe.

SET DATEFIRST 1;

Cela définit le premier jour de la semaine sur lundi (nous pouvons voir dans le graphique ci-dessus qu'une valeur de 1 cartes au lundi).

Nous pouvons afficher le paramètre actuel en utilisant @@DATEFIRST pour renvoyer la valeur actuelle de SET DATEFIRST .

SELECT @@DATEFIRST AS 'Result';

Résultat :

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

Exemple 2 - Remplacer le paramètre de langue

Cet exemple montre comment le SET DATEFIRST correspond aux paramètres de langue.

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

Résultat :

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

Nous pouvons donc voir que la langue reste la même, mais le premier jour de la semaine a changé.

Cet exemple utilise SET LANGUAGE pour définir la langue de la session en cours (qui, comme mentionné, est utilisée pour déterminer le premier jour de la semaine). Le paramètre de langue définit également implicitement le format de la date. Si nécessaire, vous pouvez utiliser SET DATEFORMAT pour remplacer ce paramètre pour le format de date.

Pour voir ce que DATEFIRST les paramètres correspondent à chaque langue, voici une liste de toutes les langues et des formats de date associés dans SQL Server 2017.

Vous pouvez également utiliser le sp_helplanguage procédure stockée pour renvoyer cette liste. Pour ce faire, consultez Comment trouver les formats de date utilisés pour une langue spécifique dans SQL Server (T-SQL).