sql >> Databasteknik >  >> RDS >> Sqlserver

DATENAME() Exempel i SQL Server

I SQL Server, T-SQL DATENAME() funktion returnerar en teckensträng som representerar den angivna datumdelen av det angivna datumet . Du kan till exempel skicka in 2021-01-07 och låt SQL Server endast returnera månadsdelen (January ).

Returtypen för DATENAME() är nvarchar .

Exempel nedan.

Syntax

DATENAME() syntax går så här:

DATENAME ( datepart , date )

Där datepart är delen av date (ett datum- eller tidsvärde) för vilket en teckensträng kommer att returneras.

Exempel 1

Här är ett grundläggande exempel där jag returnerar månadskomponenten från ett datum.

SELECT DATENAME(month, '2021-01-07') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| January  |
+----------+

Exempel 2

I det här exemplet tilldelar jag ett datum till en variabel, sedan använder jag flera instanser av DATEPART() för att hämta olika delar av det datumet.

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;

Resultat:

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | June    | 153           | 2     | 22     | Saturday  |
+--------+-----------+---------+---------------+-------+--------+-----------+

Exempel 3

Du kan också hämta de olika tidsdelarna från datumet.

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;

Resultat:

+--------+----------+----------+--------------+---------------+--------------+
| Hour   | Minute   | Second   | Millsecond   | Microsecond   | Nanosecond   |
|--------+----------+----------+--------------+---------------+--------------|
| 8      | 24       | 14       | 311          | 311204        | 311204200    |
+--------+----------+----------+--------------+---------------+--------------+

Exempel 4

Du kan också hämta TZoffset och ISO_WEEK datepart.

 TZoffset returneras som antal minuter (undertecknad). ISO_WEEK datepart hänvisar till ISO veckodatum-systemet (en del av ISO 8601-standarden) som är ett numreringssystem för veckor.

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';

Resultat:

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| +08:00             | 22         |
+--------------------+------------+

I det här exemplet ställer jag in datumet till en datetimeoffset format, som inkluderar tidszonsförskjutningen. TZoffset returneras på några minuter.

Resultaten av DATENAME() kommer ofta att likna resultaten från DATEPART() (beroende på att de flesta datumdelarna är numeriska). Däremot DATEPART() returnerar ett heltal i motsats till en teckensträng. Därför DATEPART() returnerar månader (och veckodagskomponenten) i numerisk form (t.ex. 1 istället för January ).

Få det korta månadens namn

Om du behöver månadsnamnet, men i dess förkortade, trebokstaviga förkortningsform (till exempel Jan istället för January ), kolla in min artikel 5 sätt att få det korta månadsnamnet från ett datum i SQL Server.


  1. Fråga bidrag för ett bord i postgres

  2. ORA-01950:inga privilegier på tabellutrymmet "USERS"

  3. Spåra hög tillgänglighet för PostgreSQL med hjärtslag

  4. Hur JulianDay()-funktionen fungerar i SQLite