In SQL Server gibt die T-SQL-Funktion DATENAME()
eine Zeichenkette zurück, die den angegebenen Datumsteil des angegebenen Datums darstellt. Sie können beispielsweise 2021-01-07
übergeben und SQL Server gibt nur den Monatsteil (January
) zurück.
Der Rückgabetyp für DATENAME()
ist nvarchar.
Beispiele unten.
Syntax
Die DATENAME()
-Syntax lautet wie folgt:
DATENAME ( datepart , date )
Wobei datepart
der Teil von date
(ein Datums- oder Zeitwert) ist, für den eine Zeichenkette zurückgegeben wird.
Beispiel 1
Hier ist ein einfaches Beispiel, bei dem ich die Monatskomponente eines Datums zurückgebe.
SELECT DATENAME(month, '2021-01-07') AS Result;
Ergebnis:
+----------+| Result ||----------|| January |+----------+
Beispiel 2
In diesem Beispiel weise ich ein Datum einer Variablen zu und verwende dann mehrere Instanzen von DATEPART()
, um verschiedene Teile dieses Datums abzurufen.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(year, @date) AS Year, DATENAME(quarter, @date) AS Quarter, DATENAME(month, @date) AS Month, DATENAME(dayofyear, @date) AS 'Day of Year', DATENAME(day, @date) AS Day, DATENAME(week, @date) AS Week, DATENAME(weekday, @date) AS Weekday;
Ergebnis:
+--------+-----------+---------+---------------+-------+--------+-----------+| Year | Quarter | Month | Day of Year | Day | Week | Weekday ||--------+-----------+---------+---------------+-------+--------+-----------|| 2018 | 2 | June | 153 | 2 | 22 | Saturday |+--------+-----------+---------+---------------+-------+--------+-----------+
Beispiel 3
Sie können auch die verschiedenen Zeitanteile des Datums abrufen.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';SELECT DATENAME(hour, @date) AS Hour, DATENAME(minute, @date) AS Minute, DATENAME(second, @date) AS Second, DATENAME(millisecond, @date) AS Millsecond, DATENAME(microsecond, @date) AS Microsecond, DATENAME(nanosecond, @date) AS Nanosecond;
Ergebnis:
+--------+----------+----------+--------------+---------------+--------------+| Hour | Minute | Second | Millsecond | Microsecond | Nanosecond ||--------+----------+----------+--------------+---------------+--------------|| 8 | 24 | 14 | 311 | 311204 | 311204200 |+--------+----------+----------+--------------+---------------+--------------+
Beispiel 4
Sie können auch den TZoffset
und den ISO_WEEK
Datumsteil abrufen.
Das TZoffset
wird als Anzahl der Minuten (mit Vorzeichen) zurückgegeben. Der Datumsteil ISO_WEEK
bezieht sich auf das ISO-Wochendatensystem (Teil des ISO 8601-Standards), das ein Nummerierungssystem für Wochen ist.
DECLARE @date datetimeoffset = '2018-06-02 08:24:14.3112042 +08:00';SELECT DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';
Ergebnis:
+--------------------+------------+| Time Zone Offset | ISO_WEEK ||--------------------+------------|| +08:00 | 22 |+--------------------+------------+
In diesem Beispiel habe ich das Datum auf das Format datetimeoffset
eingestellt, das den Zeitzonen-Offset enthält. Das TZoffset
wird in Minuten zurückgegeben.
Die Ergebnisse von DATENAME()
werden oft den Ergebnissen von DATEPART()
ähneln (da die meisten Datumsteile numerisch sind). DATEPART()
gibt jedoch eine ganze Zahl zurück, nicht eine Zeichenkette. Daher gibt DATEPART()
Monate (und die Wochentagskomponente) in numerischer Form zurück (z. B. 1
statt January
).
Den kurzen Monatsnamen ermitteln
Wenn Sie den Monatsnamen benötigen, aber in seiner verkürzten, aus drei Buchstaben bestehenden Form (z. B. Jan
statt January
), lesen Sie meinen Artikel 5 Ways to Get the Short Month Name from a Date in SQL Server.