DATENAME (Transact-SQL)

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceAzure Synapse AnalyticsAnalytics Platform System (PDW)

Diese Funktion gibt eine Zeichenfolge zurück, die den angegebenen datepart-Wert des angegebenen date-Werts darstellt.

Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen für Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).

Transact-SQL-Syntaxkonventionen

Syntax

DATENAME ( datepart , date )  

Hinweis

Informationen zum Anzeigen der Transact-SQL-Syntax für SQL Server 2014 (12.x) und früher finden Sie unter Dokumentation zu früheren Versionen.

Argumente

datepart
Derjenige Teil des date-Arguments, der von DATENAME zurückgegeben wird. In der folgenden Tabelle werden alle gültigen datepart-Argumente aufgeführt.

Hinweis

DATENAME akzeptiert keine benutzerdefinierten Variablenentsprechungen für die datepart-Argumente.

datepart Abkürzungen
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

Ein Ausdruck, der in einen der folgenden Datentypen aufgelöst werden kann:

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

Bei date akzeptiert DATENAME einen Spaltenausdruck, einen Ausdruck, ein Zeichenfolgenliteral oder eine benutzerdefinierte Variable. Um Mehrdeutigkeiten zu vermeiden, sollten Sie vierstellige Jahreszahlen verwenden. Unter Konfigurieren der Serverkonfigurationsoption „Umstellungsjahr für Angaben mit zwei Ziffern“ finden Sie weitere Informationen zu zweistelligen Jahreszahlen.

Rückgabetyp

nvarchar

Rückgabewert

  • Jedes datepart-Argument und die jeweils zugehörigen Abkürzungen geben den gleichen Wert zurück.

Der Rückgabewert hängt von der Sprachumgebung ab, die durch SET LANGUAGE und durch die Konfiguration der Serverkonfigurationsoption „Standardsprache“ für die Anmeldung festgelegt wurde. Der Rückgabewert hängt von SET DATEFORMAT ab, wenn date ein Zeichenfolgenliteral einiger Formate darstellt. SET DATEFORMAT ändert den Rückgabewert nicht, wenn das Datum einen Spaltenausdruck eines Datums- oder Uhrzeittyps darstellt.

Wenn der date-Parameter ein date-Datentypargument aufweist, hängt der Rückgabewert von der Einstellung ab, die durch SET DATEFIRST angegeben wurde.

datepart-Argumentdes Typs TZoffset

Wenn das datepart-Argument TZoffset (tz) lautet und das date-Argument über keinen Zeitzonenoffset verfügt, gibt DATEADD 0 (null) zurück.

date-Argument des Typs smalldatetime

Wenn date vom Typ smalldatetime ist, gibt DATENAME Sekunden als „00“ zurück.

Zurückgeben des Standardwerts für ein datepart-Argument, das nicht im date-Argument enthalten ist

Wenn der Datentyp des date-Arguments nicht über den angegebenen datepart verfügt, gibt DATENAME den Standardwert für datepart nur zurück, wenn das date-Argument ein Literal enthält.

Beispielsweise wird bei Jahr-Monat-Tag für jeden date-Datentyp standardmäßig der Wert 1900-01-01 angegeben. Die folgende Anweisung verfügt über datepart-Argumente für datepart, ein time-Argument für date. Deswegen gibt DATENAME den Wert 1900, January, 1, 1, Monday zurück.

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');  

Wenn date als Variable oder Tabellenspalte angegeben ist und der Datentyp für diese Variable oder Spalte nicht über das angegebene datepart-Argument verfügt, gibt DATENAME den Fehler 9810 zurück. Im folgenden Beispiel hat die Variable @t den Datentyp time. Bei der Ausführung würde ein Fehler auftreten, weil der Datumsteil „year“ für den time-Datentyp ungültig ist:

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

Bemerkungen

Verwenden Sie DATENAME in den folgenden Klauseln:

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

In SQL Server wandelt DATENAME Zeichenfolgenliterale implizit in den datetime2-Typ um. DATENAME unterstützt das Format YDM also nicht, wenn das Datum als Zeichenfolge übergeben wird. Sie müssen die Zeichenfolge explizit in den Typ datetime oder smalldatetime umwandeln, um das YDM-Format zu verwenden.

Beispiele

Im folgenden Beispiel werden die Datumsteile für das angegebene Datum zurückgegeben. Ersetzen Sie einen datepart-Wert in der Tabelle durch das datepart-Argument in der SELECT-Anweisung:

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

Hier ist das Resultset.

datepart Rückgabewert
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Oktober
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Tuesday
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 und Analytics-Plattformsystem (PDW)

Im folgenden Beispiel werden die Datumsteile für das angegebene Datum zurückgegeben. Ersetzen Sie einen datepart-Wert in der Tabelle durch das datepart-Argument in der SELECT-Anweisung:

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

Hier ist das Resultset.

datepart Rückgabewert
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m Oktober
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Tuesday
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

Weitere Informationen

CAST und CONVERT (Transact-SQL)