DATENAME (Transact-SQL)
Gibt eine Zeichenfolge zurück, die den angegebenen Wert für datepart des angegebenen Parameters date darstellt.
Eine Übersicht über alle Datums- und Uhrzeitdatentypen und zugehörigen Funktionen von Transact-SQL finden Sie unter Datums- und Uhrzeitdatentypen und zugehörige Funktionen (Transact-SQL).
Transact-SQL-Syntaxkonventionen
Syntax
DATENAME ( datepart , date )
Argumente
datepart
Ist der Teil von date, der zurückgegeben werden soll. In der folgenden Tabelle sind alle gültigen datepart-Argumente aufgelistet. Benutzerdefinierte Variablenentsprechungen sind nicht gültig.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 time-Wert, date-Wert, smalldatetime-Wert, datetime-Wert, datetime2-Wert oder datetimeoffset-Wert aufgelöst werden kann. date kann ein Ausdruck, ein Spaltenausdruck, eine benutzerdefinierte Variable oder ein Zeichenfolgenliteral sein.Verwenden Sie vierstellige Jahreszahlen, um Mehrdeutigkeit zu vermeiden. Informationen zu zweistelligen Jahreszahlen finden Sie unter Konfigurieren der Serverkonfigurationsoption Umstellungsjahr für Angaben mit zwei Ziffern.
Rückgabetyp
nvarchar
Rückgabewert
- Jedes datepart-Argument und die zugehörigen Abkürzungen geben denselben Wert zurück.
Der Rückgabewert hängt von der Sprachumgebung ab, die durch SET LANGUAGE und durch die Konfigurieren der Serverkonfigurationsoption Standardsprache der Anmeldung festgelegt wurde. Der Rückgabewert hängt von der Option SET DATEFORMAT ab, wenn date ein Zeichenfolgenliteral einiger Formate darstellt. SET DATEFORMAT wirkt sich nicht auf den Rückgabewert aus, wenn das Datum ein Spaltenausdruck für Daten vom Typ Datum oder Uhrzeit darstellt.
Wenn der date-Parameter ein date-Datentypargument aufweist, hängt der Rückgabewert von der Einstellung ab, die mit SET DATEFIRST angegeben wurde.
datepart-Argumentdes Typs TZoffset
Wenn das datepart-Argument TZoffset (tz) lautet und das date-Argument über keinen Zeitzonenoffset verfügt, wird NULL zurückgegeben.
date-Argument des Typs smalldatetime
Wenn date den Wert smalldatetime aufweist, werden Sekunden als 00 zurückgegeben.
Zurückgeben des Standardwerts für ein datepart-Argument, das nicht im date-Argument enthalten ist
Enthält der Datentyp im date-Argument keine Angabe zu datepart, wird für datepart nur der Standardwert zurückgegeben, wenn für date ein Literal angegeben ist.
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 und gibt 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 verfügt, wird der Fehler 9810 zurückgegeben. Im folgenden Codebeispiel tritt ein Fehler auf, weil das year-Datumsteil für den für die @t-Variable deklarierten time-Datentyp nicht gültig ist.
DECLARE @t time = '12:10:30.123';
SELECT DATENAME(year, @t);
Hinweise
DATENAME kann in den Klauseln WHERE, HAVING, GROUP BY und ORDER BY der SELECT-Liste verwendet werden.
In SQL Server 2012 wandelt DATENAME Zeichenfolgenliterale implizit als datetime2-Typen um. Daher unterstützt DATENAME das Format YDM nicht, wenn das Datum als Zeichenfolge übergeben wird. Sie müssen die Zeichenfolge explizit in den datetime-Typ oder smalldatetime-Typ umwandeln, um das YDM-Format zu verwenden.
Beispiele
Im folgenden Beispiel werden die Datumsteile für das angegebene Datum zurückgegeben.
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
Dies ist das Resultset.
datepart |
Rückgabewert |
---|---|
year, yyyy, yy |
2007 |
quarter, qq, q |
4 |
month, mm, m |
October |
dayofyear, dy, y |
303 |
day, dd, d |
30 |
week, wk, ww |
44 |
weekday, dw |
Dienstag |
hour, hh |
12 |
minute, n |
15 |
second, ss, s |
32 |
millisecond, ms |
123 |
microsecond, mcs |
123456 |
nanosecond, ns |
123456700 |
TZoffset, tz |
310 |
ISO_WEEK, ISOWK, ISOWW |
44 |