Dans SQL Server, le T-SQL DATENAME()
la fonction renvoie une chaîne de caractères qui représente la partie de date spécifiée de la date spécifiée . Par exemple, vous pouvez transmettre 2021-01-07
et que SQL Server ne renvoie que la partie mois (January
).
Le type de retour pour DATENAME()
est nvarchar .
Exemples ci-dessous.
Syntaxe
Le DATENAME()
la syntaxe ressemble à ceci :
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 renvoyée.
Exemple 1
Voici un exemple de base où je renvoie le composant mois à partir d'une date.
SELECT DATENAME(month, '2021-01-07') AS Result;
Résultat :
+----------+ | Result | |----------| | January | +----------+
Exemple 2
Dans cet exemple, j'attribue 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 l'heure à 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 le TZoffset
et la ISO_WEEK
partie de date.
Le TZoffset
est renvoyé sous forme de nombre de minutes (signé). La ISO_WEEK
datepart fait référence au système de date de semaine ISO (partie de la norme ISO 8601) qui est un système de numérotation des 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 sur un datetimeoffset
format, qui inclut le décalage horaire. Le TZoffset
est renvoyé en minutes.
Les résultats de DATENAME()
ressemblera souvent aux résultats de DATEPART()
(car la plupart des parties de date sont numériques). Cependant, DATEPART()
renvoie un entier par opposition à une chaîne de caractères. Donc DATEPART()
renverra les mois (et le composant du jour de la semaine) sous forme numérique (par exemple, 1
au lieu de January
).
Obtenir le nom court du mois
Si vous avez besoin du nom du mois, mais sous sa forme abrégée à 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.