- 29.07.2017
- 3 Minuten zu lesen
-
-
c -
j -
r -
M -
M -
+9
-
Gilt für:
SQL Server (alle unterstützten Versionen)
Azure SQL Database
Azure SQL Managed Instance
Azure Synapse Analytics
Parallel Data Warehouse
Diese Funktion gibt eine Zeichenkette zurück, die den angegebenen Datumsanteil des angegebenen Datums darstellt.
Siehe Datum- und Zeitdatentypen und -funktionen (Transact-SQL) für eine Übersicht über alle Transact-SQL-Datentypen und -Funktionen.
Transact-SQL-Syntaxkonventionen
Syntax
DATENAME ( datepart , date )
Hinweis
Um die Transact-SQL-Syntax für SQL Server 2014 und früher anzuzeigen, siehe Dokumentation zu früheren Versionen.
Argumente
datepart
Der spezifische Teil des Datumsarguments, den DATENAME zurückgibt. Diese Tabelle listet alle gültigen datepart-Argumente auf.
Anmerkung
DATENAME akzeptiert keine benutzerdefinierten Variablenäquivalente für die datepart-Argumente.
| Datumsteil | Abkürzungen | Jahr | JJ, yyyy |
|---|---|
| Quartal | qq, q | Monat | mm, m |
| Jahrestag | dy, y |
| Tag | dd, d | Woche | wk, ww | Wochentag | dw, w |
| Stunde | h |
| Minute | mi, n | Sekunde | ss, s |
| Millisekunde | ms | Mikrosekunde | mcs | Nanosekunde | ns |
| TZoffset | tz | ISO_WEEK | ISOWK, ISOWW |
date
Ein Ausdruck, der sich in einen der folgenden Datentypen auflösen lässt:
- Datum
- Datetime
- Datetimeoffset
- datetime2
- smalldatetime
- time
Für Datum akzeptiert DATENAME einen Spaltenausdruck, einen Ausdruck, ein Stringliteral oder eine benutzerdefinierte Variable. Verwenden Sie vierstellige Jahreszahlen, um Mehrdeutigkeitsprobleme zu vermeiden. Informationen über zweistellige Jahreszahlen finden Sie unter Konfigurieren der Serverkonfigurationsoption für zweistellige Jahreszahlen.
Rückgabetyp
nvarchar
Rückgabewert
- Jeder Datumsteil und seine Abkürzungen geben denselben Wert zurück.
Der Rückgabewert hängt von der Sprachumgebung ab, die mit SET LANGUAGE und der Serverkonfigurationsoption für die Anmeldung konfiguriert wurde. Der Rückgabewert hängt von SET DATEFORMAT ab, wenn das Datum ein Stringliteral mit bestimmten Formaten ist. SET DATEFORMAT ändert den Rückgabewert nicht, wenn das Datum ein Spaltenausdruck eines Datums- oder Zeitdatentyps ist.
Wenn der Datumsparameter ein Datumsdatentypargument hat, hängt der Rückgabewert von der Einstellung ab, die durch SET DATEFIRST angegeben wurde.
TZoffset Datumsteil Argument
Wenn das Datumsteilargument TZoffset (tz) ist und das Datumargument keinen Zeitzonenoffset hat, gibt DATEADD 0 zurück.
smalldatetime date Argument
Wenn date smalldatetime ist, gibt DATENAME Sekunden als 00 zurück.
Vorgabe für einen nicht im Datumsargument enthaltenen Datenteil
Wenn der Datentyp des Datumsarguments nicht den angegebenen Datenteil enthält, gibt DATENAME die Vorgabe für diesen Datenteil nur zurück, wenn das Datumsargument ein Literal enthält.
Zum Beispiel ist die Vorgabe Jahr-Monat-Tag für jeden Datumsdatentyp 1900-01-01. Diese Anweisung hat Datumsteilargumente für Datumsteil, ein Zeitargument für Datum, und DATENAME gibt 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');
Wenn Datum als Variable oder Tabellenspalte angegeben ist und der Datentyp für diese Variable oder Spalte nicht den angegebenen Datumsteil hat, gibt DATENAME Fehler 9810 zurück. In diesem Beispiel hat die Variable @t einen Zeit-Datentyp. Das Beispiel schlägt fehl, weil der Datumsteil Jahr für den Datentyp Zeit 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 werden String-Literale durch DATENAME implizit in einen datetime2-Typ umgewandelt. Mit anderen Worten, DATENAME unterstützt nicht das Format YDM, wenn das Datum als String übergeben wird. Sie müssen die Zeichenfolge explizit in einen datetime- oder smalldatetime-Typ umwandeln, um das YDM-Format zu verwenden.
Beispiele
Dieses Beispiel gibt die Datumsteile für das angegebene Datum zurück. Ersetzen Sie einen Datumswert aus der Tabelle für das Argument datepart in der SELECT-Anweisung:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
Hier ist die Ergebnismenge.
| Datenteil | Rückgabewert |
|---|---|
| Jahr, jjjj, jj | 2007 |
| Quartal, qq, q | 4 |
| Monat, mm, m | Oktober |
| Tag des Jahres, dy, y | 303 | Tag, dd, d | 30 | Woche, wk, ww | 44 | Wochentag, dw | Dienstag |
| Stunde, hh | 12 |
| Minute, n | 15 | Sekunde, ss, s | 32 | Millisekunde, ms | 123 |
| Mikrosekunde, mcs | 123456 |
| Nanosekunde, ns | 123456700 | TZ-Versatz, tz | +05:10 |
| ISO_WEEK, ISOWK, ISOWW | 44 |
Azure Synapse Analytics and Parallel Data Warehouse
Dieses Beispiel gibt die Datumsteile für das angegebene Datum zurück. Ersetzen Sie einen Datumswert aus der Tabelle für das Argument datepart in der SELECT-Anweisung:
SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');
Hier ist die Ergebnismenge.
| Datumsteil | Rückgabewert |
|---|---|
| Jahr, jjjj, jj | 2007 |
| Quartal, qq, q | 4 |
| Monat, mm, m | Oktober |
| Tag des Jahres, dy, y | 303 | Tag, dd, d | 30 | Woche, wk, ww | 44 | Wochentag, dw | Dienstag |
| Stunde, hh | 12 |
| Minute, n | 15 | Sekunde, ss, s | 32 | Millisekunde, ms | 123 |
| Mikrosekunde, mcs | 123456 |
| Nanosekunde, ns | 123456700 | TZ-Versatz, tz | +05:10 |
| ISO_WEEK, ISOWK, ISOWW | 44 |
Siehe auch
CAST und CONVERT (Transact-SQL)