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 }
Où 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).