In SQL Server das T-SQL DATENAME()
-Funktion gibt eine Zeichenfolge zurück, die den angegebenen datepart darstellt des angegebenen Datums . Sie können beispielsweise 2021-01-07
übergeben und lassen Sie SQL Server nur den Monatsteil zurückgeben (January
).
Der Rückgabetyp für DATENAME()
ist nvarchar .
Beispiele unten.
Syntax
Der DATENAME()
Syntax sieht so aus:
DATENAME ( datepart , date )
Wobei datepart
ist der Teil von date
(ein Datums- oder Uhrzeitwert), für den eine Zeichenfolge zurückgegeben wird.
Beispiel 1
Hier ist ein einfaches Beispiel, in dem ich die Monatskomponente von einem Datum zurückgebe.
SELECT DATENAME(month, '2021-01-07') AS Result;
Ergebnis:
+----------+ | Result | |----------| | January | +----------+
Beispiel 2
In diesem Beispiel weise ich einer Variablen ein Datum zu, dann verwende ich 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
Aus dem Datum können Sie auch die verschiedenen Zeitteile 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
abrufen und die ISO_WEEK
Datumsteil.
Der TZoffset
wird als Anzahl der Minuten (vorzeichenbehaftet) zurückgegeben. Die ISO_WEEK
datepart bezieht sich auf das ISO-Wochendatumssystem (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 setze ich das Datum auf einen datetimeoffset
Format, das den Zeitzonenoffset enthält. Der TZoffset
wird in Minuten zurückgegeben.
Die Ergebnisse von DATENAME()
ähnelt oft den Ergebnissen von DATEPART()
(da die meisten Datumsteile numerisch sind). Allerdings DATEPART()
gibt anstelle einer Zeichenfolge eine ganze Zahl zurück. Daher DATEPART()
gibt Monate (und die Wochentagskomponente) in numerischer Form zurück (z. B. 1
statt January
).
Abrufen des kurzen Monatsnamens
Wenn Sie den Monatsnamen benötigen, aber in seiner abgekürzten Form mit 3 Buchstaben (z. B. Jan
statt January
), sehen Sie sich meinen Artikel 5 Möglichkeiten zum Abrufen des kurzen Monatsnamens aus einem Datum in SQL Server an.