DATENAME (Transact-.SQL)

  • 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)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.