DATENAME (Transact-SQL)

S’applique à :SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Cette fonction retourne une chaîne de caractères représentant la valeur datepart spécifiée de l’argument date spécifié.

Pour obtenir une vue d’ensemble de tous les types de données et toutes les fonctions de date et d’heure Transact-SQL, consultez Types de données et fonctions de date et d’heure (Transact-SQL).

Conventions de la syntaxe Transact-SQL

Syntaxe

DATENAME ( datepart , date )  

Remarque

Pour afficher la syntaxe Transact-SQL pour SQL Server 2014 (12.x) et versions antérieures, consultez la Documentation sur les versions antérieures.

Arguments

datepart
Partie spécifique de l’argument date que DATENAME retourne. Ce tableau répertorie tous les arguments datepart valides.

Notes

DATENAME n’accepte pas d’équivalents de variables définis par l’utilisateur pour les arguments datepart.

datepart Abréviations
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Expression qui peut être résolue en l’un des types de données suivants :

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Pour date, DATENAME accepte une expression de colonne, une expression, un littéral de chaîne ou une variable définie par l’utilisateur. Pour éviter toute ambiguïté, utilisez des années à quatre chiffres. Pour obtenir des informations sur les années à deux chiffres, consultez Configurer l’option de configuration du serveur two digit year cutoff.

Type de retour

nvarchar

Valeur de retour

  • Chaque datepart et ses abréviations retournent la même valeur.

La valeur retournée dépend de l’environnement de langue défini à l’aide de SET LANGUAGE et de l’option de configuration de serveur Configurer la langue par défaut de la connexion. La valeur retournée dépend de SET DATEFORMAT si date est un littéral de chaîne de certains formats. SET DATEFORMAT ne change pas la valeur de retour quand la date est une expression de colonne d’un type de données de date ou d’heure.

Quand le paramètre date a un argument de type de données date, la valeur retournée dépend du paramètre spécifié par SET DATEFIRST.

Argument de la partie de date TZoffset

Si l’argument datepart est de type TZoffset (tz) et que l’argument date n’a aucun décalage de fuseau horaire, DATEADD retourne la valeur 0.

Argument date smalldatetime

Quand date a la valeur smalldatetime, DATENAME retourne les secondes sous la forme 00.

Valeur par défaut retournée pour une partie de date qui ne figure pas dans l'argument date

Si le type de données de l’argument date n’a pas l’argument datepart spécifié, DATENAME retourne la valeur par défaut pour cet argument datepart uniquement si date a un littéral.

Par exemple, la combinaison année-mois-jour par défaut pour tout type de données date est 1900-01-01. L’instruction suivante a des arguments de partie de date pour datepart, un argument d’heure pour date, et DATENAME retourne 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Si l’argument date est spécifié comme variable ou colonne de table, et que cette variable ou colonne n’a pas l’argument datepart spécifié, DATENAME retourne l’erreur 9810. Dans l’exemple suivant, la variable @t a le type de donnéesheure. L’exemple échoue car la partie année de la date n’est pas valide pour le type de données time :

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Notes

Utilisez DATENAME dans les clauses suivantes :

  • GROUP BY
  • HAVING
  • ORDER BY
  • SELECT <list>
  • WHERE

Dans SQL Server, DATENAME convertit des littéraux de chaîne implicitement en type datetime2. En d’autres termes, DATENAME ne prend pas en charge le format YDM quand la date est passée sous forme de chaîne. Vous devez caster explicitement la chaîne en type datetime ou smalldatetime pour utiliser le format AJM.

Exemples

L’exemple suivant retourne les parties de la date spécifiée. Remplacez une valeur datepart de la table pour l’argument datepart dans l’instruction SELECT :

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Voici le jeu de résultats obtenu.

datepart Valeur retournée
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Octobre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Mardi
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics et Analytics Platform System (PDW)

L’exemple suivant retourne les parties de la date spécifiée. Remplacez une valeur datepart de la table pour l’argument datepart dans l’instruction SELECT :

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

Voici le jeu de résultats obtenu.

datepart Valeur retournée
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Octobre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Mardi
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Voir aussi

CAST et CONVERT (Transact-SQL)