Dans SQL Server, vous pouvez utiliser le MONTH()
fonction pour renvoyer la partie "mois" d'une date. Ceci est renvoyé sous la forme d'un entier (pas le nom du mois).
Vous trouverez ci-dessous des exemples d'utilisation de cette fonction.
Syntaxe
La syntaxe ressemble à ceci :
MONTH ( date )
Où date
est une expression qui se résout en l'un des types de données suivants :
- date
- dateheure
- datetimeoffset
- datetime2
- petite date/heure
- temps
Il peut s'agir d'une expression de colonne, d'une expression, d'un littéral de chaîne ou d'une variable définie par l'utilisateur.
Exemple
Voici un exemple basique de son fonctionnement :
SELECT SYSDATETIME() AS 'Date', MONTH(SYSDATETIME()) AS 'Month';
Résultat :
+-----------------------------+---------+ | Date | Month | |-----------------------------+---------| | 2018-06-18 00:39:06.7954314 | 6 | +-----------------------------+---------+
Donc le MONTH()
la fonction a pu extraire le mois de la datetime2 valeur (qui a été retournée par le SYSDATETIME()
fonction).
Date fournie sous forme de littéral de chaîne
Voici un exemple où la date est fournie sous forme de littéral de chaîne.
SELECT MONTH('2019-01-07') AS Result;
Résultat :
+----------+ | Result | |----------| | 1 | +----------+
Et voici un exemple où la date est fournie dans un format différent :
SELECT MONTH('07/01/2017') AS Result;
Résultat :
+----------+ | Result | |----------| | 7 | +----------+
Cependant, il est généralement préférable d'éviter d'utiliser des dates dans de tels formats. Si vous devez le faire, vous devrez tenir compte des paramètres de langue et/ou des paramètres de format de date de la session en cours.
Paramètres de langue
La sortie de l'exemple précédent dépendra des paramètres de langue et/ou des paramètres de format de date de la session en cours.
Lorsque nous définissons la langue, le format de date est implicitement défini en même temps.
Voici ce qui se passe lorsque nous fournissons le même argument de date dans deux environnements linguistiques différents.
britannique
SET LANGUAGE British; SELECT MONTH('07/01/2017') AS Result;
Résultat :
+----------+ | Result | |----------| | 1 | +----------+
us_English
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Résultat :
+----------+ | Result | |----------| | 7 | +----------+
Paramètres de format de date
Les paramètres de format de date peuvent remplacer les paramètres de langue, vous devez donc également être conscient de ce paramètre. Par exemple, nous pourrions utiliser us_English pour notre langue (qui a un format de date par défaut de mdy ), mais nous pourrions remplacer le format de date par dmy .
Voici un exemple :
us_English - Format de date par défaut
Ici, nous définissons la langue sur us_English , qui définit implicitement le format de date sur myy .
SET LANGUAGE us_English; SELECT MONTH('07/01/2017') AS Result;
Résultat :
+----------+ | Result | |----------| | 7 | +----------+
us_English – Remplacer le format de date
Ici, nous définissons la langue sur us_English (qui définit implicitement le format de date), mais ensuite nous définissons explicitement le format de date sur dmy . Cela remplace le format de date implicitement défini lorsque nous avons défini la langue.
SET LANGUAGE us_English; SET DATEFORMAT dmy; SELECT MONTH('07/01/2017') AS Result;
Résultat :
+----------+ | Result | |----------| | 1 | +----------+
Renvoyer le nom du mois
Si vous devez renvoyer le nom du mois (par opposition au numéro du mois), consultez 3 façons d'obtenir le nom du mois à partir d'une date dans SQL Server.