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

MONTH() Exemples dans SQL Server (T-SQL)

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 )

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.