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

DATENAME() Beispiele in SQL Server

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.