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

3 façons d'obtenir le nom du mois à partir d'une date dans SQL Server (T-SQL)

Lorsque vous utilisez SQL Server, vous disposez de plusieurs options différentes lorsque vous devez renvoyer le nom du mois à partir d'une date à l'aide de T-SQL. Par nom de mois, je ne parle pas du numéro de mois (comme 07 ). Je parle du nom complet du mois (comme juillet ).

Par exemple, lorsqu'on vous donne la date du 2018-07-01 , vous voulez juillet à retourner.

Cet article présente trois façons de renvoyer le nom du mois à partir d'une date dans SQL Server à l'aide de T-SQL.

La fonction FORMAT()

Le FORMAT() La fonction renvoie une valeur formatée dans le format spécifié et la culture facultative. Vous pouvez l'utiliser pour renvoyer le nom du mois à partir d'une date.

Voici un exemple :

DECLARE @date datetime2 = '2018-07-01';
SELECT FORMAT(@date, 'MMMM') AS Result;

Résultat :

+----------+
| Result   |
|----------|
| July     |
+----------+

Dans ce cas, nous avons fourni une chaîne de format de MMMM qui est une chaîne de format de date et d'heure personnalisée pour renvoyer le nom du mois.

La bonne chose à propos du FORMAT() fonction est qu'elle accepte un argument optionnel qui vous permet de spécifier la culture à utiliser.

Voici quelques exemples :

DECLARE @date datetime2 = '2018-07-01';
SELECT 
    FORMAT(@date, 'MMMM', 'en-US') AS 'en-US',
    FORMAT(@date, 'MMMM', 'es-es') AS 'es-es',
    FORMAT(@date, 'MMMM', 'de-de') AS 'de-de',
    FORMAT(@date, 'MMMM', 'zh-cn') AS 'zh-cn';

Résultat :

+---------+---------+---------+---------+
| en-US   | es-es   | de-de   | zh-cn   |
|---------+---------+---------+---------|
| July    | julio   | Juli    | 七月    |
+---------+---------+---------+---------+

Si vous ne fournissez pas l'argument culture, la langue de la session en cours est utilisée. Si vous n'êtes pas sûr de la langue utilisée par la session en cours, voici 3 façons d'obtenir la langue de la session en cours. Si vous constatez que vous devez changer de langue, voici comment la définir sur une autre langue.

Vous pouvez également utiliser le FORMAT() fonction pour obtenir le nom abrégé du mois. Pour cela, utilisez simplement MMM (trois M s au lieu de quatre).

Voici un exemple qui renvoie à la fois le nom abrégé du mois et le nom complet du mois :

DECLARE @date datetime2(0) = '2028-09-01';
SELECT 
    FORMAT(@date, 'MMM', 'en-US') 'en-US',
    FORMAT(@date, 'MMM', 'es-es') 'es-es',
    FORMAT(@date, 'MMM', 'it') 'it'
UNION ALL
SELECT 
    FORMAT(@date, 'MMMM', 'en-US'),
    FORMAT(@date, 'MMMM', 'es-es'),
    FORMAT(@date, 'MMMM', 'it');

Résultat :

+-----------+------------+-----------+
| en-US     | es-es      | it        |
|-----------+------------+-----------|
| Sep       | sep.       | set       |
| September | septiembre | settembre |
+-----------+------------+-----------+

Ce n'est qu'une des nombreuses façons d'obtenir le nom abrégé du mois à partir d'une date (bien que cette méthode soit sans doute la meilleure). Il existe au moins quatre autres façons de renvoyer le nom abrégé du mois à partir d'une date.

La fonction DATENAME()

Le DATENAME() la fonction est similaire à la DATEPART() fonction, sauf qu'elle renvoie le nom de la partie de date spécifiée (mais uniquement lorsqu'un nom est applicable). Cela signifie qu'il renvoie le nom du jour de la semaine ou le nom du mois si c'est ce dont vous avez besoin.

Voici comment obtenir le nom du mois avec cette fonction :

DECLARE @date datetime2 = '2018-07-01';
SELECT DATENAME(month, @date) AS Result;

Résultat :

+----------+
| Result   |
|----------|
| July     |
+----------+

La fonction scalaire ODBC MONTHNAME()

Il existe une fonction scalaire ODBC spécifiquement pour renvoyer le nom du mois à partir d'une date. Son nom est MONTHNAME() , et ça se passe comme ça :

DECLARE @date datetime2 = '2018-07-01';
SELECT {fn MONTHNAME(@date)} AS Result;

Résultat :

+----------+
| Result   |
|----------|
| July     |
+----------+

Lorsque vous utilisez des fonctions scalaires ODBC dans T-SQL, elles sont entourées d'accolades ({} ) et le nom de la fonction est préfixé par fn .

Si vous avez besoin d'obtenir le nom abrégé du mois, consultez 5 façons d'obtenir le nom abrégé du mois à partir d'une date dans SQL Server.