DATENAME (Transact-SQL)
Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance Azure Synapse Analytics Analytics 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 )
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 sehen Sie das Ergebnis.
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 sehen Sie das Ergebnis.
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 |