In SQL Server das T-SQL DATEPART()
Die Funktion gibt eine Ganzzahl 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 Jahresteil zurückgeben (2021
).
Sie können auch den Zeitanteil extrahieren. Sie können beispielsweise 2018-06-02 08:24:14.3112042
übergeben und lassen Sie SQL Server nur den Stundenteil zurückgeben (8
).
Beispiele unten.
Syntax
Zuerst die Syntax. Der DATEPART()
Syntax sieht so aus:
DATEPART ( datepart , date )
Wobei datepart
ist der Teil von date
(ein Datums- oder Zeitwert), für den eine ganze Zahl zurückgegeben wird.
Beispiel 1
Hier ist ein einfaches Beispiel, in dem ich die Jahreskomponente von einem Datum zurückgebe.
SELECT DATEPART(year, '2021-01-07') AS Result;
Ergebnis:
+----------+ | Result | |----------| | 2021 | +----------+
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 DATEPART(year, @date) AS Year, DATEPART(quarter, @date) AS Quarter, DATEPART(month, @date) AS Month, DATEPART(dayofyear, @date) AS 'Day of Year', DATEPART(day, @date) AS Day, DATEPART(week, @date) AS Week, DATEPART(weekday, @date) AS Weekday;
Ergebnis:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | 6 | 153 | 2 | 22 | 7 | +--------+-----------+---------+---------------+-------+--------+-----------+
Beispiel 3
Aus dem Datum können Sie auch die verschiedenen Zeitteile abrufen.
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DATEPART(hour, @date) AS Hour, DATEPART(minute, @date) AS Minute, DATEPART(second, @date) AS Second, DATEPART(millisecond, @date) AS Millsecond, DATEPART(microsecond, @date) AS Microsecond, DATEPART(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 DATEPART(TZoffset, @date) AS 'Time Zone Offset', DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';
Ergebnis:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | 480 | 22 | +--------------------+------------+
In diesem Beispiel setze ich das Datum auf einen datetimeoffset
Format, das den Zeitzonenoffset enthält. Der TZoffset
wird in Minuten zurückgegeben.
Eine schnelle Alternative
T-SQL bietet auch eine präzisere Möglichkeit, die Tages-, Monats- oder Jahreskomponenten eines Datums mit DAY()
zurückzugeben , MONTH()
und YEAR()
Funktionen.
Sie funktionieren so:
DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042'; SELECT DAY(@date) AS DAY, MONTH(@date) AS MONTH, YEAR(@date) AS YEAR;
Ergebnis:
+-------+---------+--------+ | DAY | MONTH | YEAR | |-------+---------+--------| | 2 | 6 | 2018 | +-------+---------+--------+
Erhalten des Monatsnamens oder Tagesnamens
Wenn Sie den Monats- oder Tagesnamen benötigen, verwenden Sie den DATENAME()
funktionieren stattdessen. Diese Funktion gibt die Ergebnisse als Zeichenfolge zurück, und Sie können den Monat und den Wochentag nach Namen zurückgeben. Hier sind einige DATENAME()
Beispiele, um zu demonstrieren, was ich meine.