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

Convertir un nom de mois en numéro de mois dans SQL Server (T-SQL)

Dans SQL Server, vous pouvez utiliser le MONTH() fonction pour convertir un nom de mois en son numéro correspondant.

Exemple

Voici un exemple de conversion d'un nom de mois en numéro de mois.

SELECT MONTH('September' + '1,1');

Résultat :

9

Ce que je fais ici consiste essentiellement à fabriquer une "date" (qui inclut mon mois spécifié) afin que SQL Server ne génère pas d'erreur lors de l'utilisation du MONTH() fonction sans date valide.

Cette fonction accepte toute expression pouvant être résolue en une heure , date , smalldatetime , dateheure , dateheure2 , ou datetimeoffset valeur. Il peut s'agir d'une expression, d'une expression de colonne, d'une variable définie par l'utilisateur ou d'un littéral de chaîne.

Plus "de type rendez-vous"

Vous pouvez également fournir un argument plus "ressemblant à une date" en faisant quelque chose comme ceci :

SELECT MONTH('September' + ' 01, 1900');

Résultat :

9

Jour et année en cours

Ou si vous préférez utiliser le jour et l'année actuels, vous pouvez faire quelque chose comme ceci :

SELECT MONTH('September' + FORMAT(GETDATE(), 'd,y'));

Résultat :

9

Juste pour être clair, à moins que le mois spécifié ne soit le même que le mois en cours, vous vous retrouverez avec une date différente de la date actuelle.

Voici un exemple pour illustrer ce que je veux dire :

SELECT 
  FORMAT(GETDATE(), 'MMMM d, yyyy') AS [Today],
  'September' + FORMAT(GETDATE(), ' d, yyyy') AS [Modified],
  MONTH('September' + FORMAT(GETDATE(), ' d, yyyy')) AS [Month Number];

Résultat :

 +----------------+--------------------+----------------+
 | Today          | Modified           | Month Number   |
 |----------------+--------------------+----------------|
 | March 22, 2020 | September 22, 2020 | 9              |
 +----------------+--------------------+----------------+ 

J'ai exécuté cette requête le 22 mars 2020, mais la date modifiée est le 22 septembre 2020.

Quoi qu'il en soit, le numéro de mois correct est renvoyé lorsque nous utilisons MONTH() .