sql >> Databasteknik >  >> RDS >> Sqlserver

DATEPART() Exempel i SQL Server

I SQL Server, T-SQL DATEPART() funktion returnerar ett heltal 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 årsdelen (2021 ).

Du kan också extrahera tidsdelen. Du kan till exempel skicka in 2018-06-02 08:24:14.3112042 och låt SQL Server endast returnera timdelen (8 ).

Exempel nedan.

Syntax

Först, syntaxen. DATEPART() syntax går så här:

DATEPART ( datepart , date )

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

Exempel 1

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

SELECT DATEPART(year, '2021-01-07') AS Result;

Resultat:

+----------+
| Result   |
|----------|
| 2021     |
+----------+

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

Resultat:

+--------+-----------+---------+---------------+-------+--------+-----------+
| Year   | Quarter   | Month   | Day of Year   | Day   | Week   | Weekday   |
|--------+-----------+---------+---------------+-------+--------+-----------|
| 2018   | 2         | 6       | 153           | 2     | 22     | 7         |
+--------+-----------+---------+---------------+-------+--------+-----------+

Exempel 3

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

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;

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 
    DATEPART(TZoffset, @date) AS 'Time Zone Offset',
    DATEPART(ISO_WEEK, @date) AS 'ISO_WEEK';

Resultat:

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| 480                | 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.

Ett snabbt alternativ

T-SQL erbjuder också ett mer kortfattat sätt att returnera dag-, månads- eller årskomponenter från ett datum med DAY() , MONTH() och YEAR() funktioner.

De fungerar så här:

DECLARE @date datetime2 = '2018-06-02 08:24:14.3112042';
SELECT 
    DAY(@date) AS DAY,
    MONTH(@date) AS MONTH,
    YEAR(@date) AS YEAR;

Resultat:

+-------+---------+--------+
| DAY   | MONTH   | YEAR   |
|-------+---------+--------|
| 2     | 6       | 2018   |
+-------+---------+--------+

Hämta månadens namn eller dagnamn

Om du behöver få månadsnamnet eller dagsnamnet, använd DATENAME() funktion istället. Den här funktionen returnerar resultaten som en teckensträng och du kan returnera månaden och veckodagen med namn. Här är några DATENAME() exempel för att visa vad jag menar.


  1. Hur tar man bort en fil i PL/SQL?

  2. Hur man skapar en tom databas i Access 2016

  3. Bästa alternativet för att lagra användarnamn och lösenord i Android-appen

  4. Hur man definierar en primärnyckel för automatisk ökning i Oracle