En SQL Server, la fonction T-SQL DATENAME() renvoie une chaîne de caractères qui représente la partie spécifiée de la date spécifiée. Par exemple, vous pouvez passer 2021-01-07 et faire en sorte que SQL Server renvoie uniquement la partie mois (January).

Le type de retour pour DATENAME() est nvarchar.

Exemples ci-dessous.

Syntaxe

La syntaxe de DATENAME() se présente comme suit :

DATENAME ( datepart , date )

datepart est la partie de date (une valeur de date ou d’heure) pour laquelle une chaîne de caractères sera retournée.

Exemple 1

Voici un exemple de base où je retourne la composante mois d’une date.

SELECT DATENAME(month, '2021-01-07') AS Result;

Résultat:

+----------+| Result ||----------|| January |+----------+

Exemple 2

Dans cet exemple, j’affecte une date à une variable, puis j’utilise plusieurs instances de DATEPART() pour récupérer différentes parties de cette date.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;

Résultat:

+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+

Exemple 3

Vous pouvez également récupérer les différentes parties de temps à partir de la date.

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;

Résultat:

+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+

Exemple 4

Vous pouvez également récupérer la partie de date TZoffset et la partie de date ISO_WEEK.

La TZoffset est retournée comme le nombre de minutes (signé). La partie de date ISO_WEEK fait référence au système de date-semaine ISO (qui fait partie de la norme ISO 8601) qui est un système de numérotation pour les semaines.

DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';

Résultat:

+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+

Dans cet exemple, j’ai défini la date au format datetimeoffset, qui inclut le décalage du fuseau horaire. Le TZoffset est retourné en minutes.

Les résultats de DATENAME() ressembleront souvent aux résultats de DATEPART() (en raison du fait que la plupart des parties de la date sont numériques). Cependant, DATEPART() renvoie un nombre entier par opposition à une chaîne de caractères. Par conséquent, DATEPART() renverra les mois (et la composante jour de la semaine) sous forme numérique (par exemple, 1 au lieu de January).

Avoir le nom court du mois

Si vous avez besoin du nom du mois, mais sous sa forme abrégée de 3 lettres (par exemple, Jan au lieu de January), consultez mon article 5 façons d’obtenir le nom court du mois à partir d’une date dans SQL Server.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.