DATENAME (Transact-…SQL)

  • 07/29/2017
  • 3 minutes de lecture
    • c
    • j
    • .

    • r
    • M
    • M
    • +9

S’applique à : SQL Server (toutes les versions prises en charge) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Cette fonction renvoie une chaîne de caractères représentant la partie de date spécifiée de la date spécifiée.

Voir Types de données et fonctions de date et d’heure (Transact-SQL) pour un aperçu de tous les types de données et fonctions de date et d’heure Transact-SQL.

Conventions de la syntaxe Transact-SQL

Syntaxe

DATENAME ( datepart , date ) 

Note

Pour visualiser la syntaxe Transact-SQL pour SQL Server 2014 et antérieur, voir la documentation des versions précédentes.

Arguments

datepart
La partie spécifique de l’argument date que DATENAME renverra. Ce tableau liste tous les arguments de datepart valides.

Note

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

.

datepart Abréviations
année yy, yyyy
quarter qq, q
mois mm, m
jour de l’année dy, y
jour jj, d
semaine wk, ww jour de la semaine dw, w heure hh minute mi, n seconde ss, s
milliseconde ms
microseconde mcs
nanoseconde ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Une expression qui peut se résoudre à l’un des types de données suivants :

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

Pour la date, DATENAME acceptera une expression de colonne, une expression, un littéral de chaîne ou une variable définie par l’utilisateur. Utilisez des années à quatre chiffres pour éviter les problèmes d’ambiguïté. Voir Configurer l’option de configuration de serveur de coupure de l’année à deux chiffres pour des informations sur les années à deux chiffres.

Type de retour

nvarchar

Valeur de retour

  • Chaque partie de date et ses abréviations renvoient la même valeur.

La valeur de retour dépend de l’environnement linguistique défini par l’utilisation de SET LANGUAGE, et par l’option de configuration de serveur Configurer la langue par défaut du login. La valeur de retour dépend de SET DATEFORMAT si la date est une chaîne littérale de certains formats. SET DATEFORMAT ne change pas la valeur de retour lorsque la date est une expression de colonne d’un type de données de date ou d’heure.

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

TZoffset datepart Argument

Si l’argument datepart est TZoffset (tz) et que l’argument date n’a pas de décalage de fuseau horaire, DATEADD renvoie 0.

smalldatetime date Argument

Lorsque date est smalldatetime, DATENAME renvoie les secondes sous la forme 00.

Défaut retourné pour une partie de date qui n’est pas dans l’argument de date

Si le type de données de l’argument de date n’a pas la partie de date spécifiée, DATENAME retournera le défaut pour cette partie de date seulement si l’argument de date a un littéral .

Par exemple, l’année-mois-jour par défaut pour tout type de données de date est 1900-01-01. Cette instruction a des arguments de partie de date pour datepart, un argument de temps pour date, et DATENAME renvoie 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 la date est spécifiée comme une variable ou une colonne de table, et que le type de données pour cette variable ou cette colonne n’a pas la partie de date spécifiée, DATENAME renverra l’erreur 9810. Dans cet exemple, la variable @t a un type de données temps. L’exemple échoue parce que la partie date année n’est pas valide pour le type de données heure:

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

Remarques

Utiliser DATENAME dans les clauses suivantes :

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

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

Exemples

Cet exemple renvoie les parties de date pour la date spécifiée. Substituez une valeur de partie de date 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.

datepart Valeur de retour
année, aaaa, aaa 2007
quartier, qq, q 4 mois, mm, m octobre jour de l’année, dy, y 303 jour, dd, d 30 semaine, wk, ww 44 jour de la semaine, dw mardi
heure, hh 12
minute, n 15
seconde, ss, s 32
milliseconde, ms 123
microseconde, mcs 123456 nanoseconde, ns 123456700 TZoffset, tz +05 :10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Cet exemple renvoie les parties de date pour la date spécifiée. Remplacez une valeur de partie de date de la table par 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.

datepart Valeur de retour
année, aaaa, aaa 2007
quartier, qq, q 4 mois, mm, m octobre jour de l’année, dy, y 303 jour, dd, d 30 semaine, wk, ww 44 jour de la semaine, dw mardi
heure, hh 12
minute, n 15
seconde, ss, s 32
milliseconde, ms 123
microseconde, mcs 123456 nanoseconde, ns 123456700 TZoffset, tz +05 :10
ISO_WEEK, ISOWK, ISOWW 44

See also

CAST et CONVERT (Transact-SQL)

.

Laisser un commentaire

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