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 )
Où 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.