Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

DATEPART()-Beispiele in SQL Server

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.