sql >> Database teknologi >  >> RDS >> Sqlserver

DATEPART() Eksempler i SQL Server

I SQL Server, T-SQL DATEPART() funktion returnerer et heltal, der repræsenterer den angivne datodel af den angivne dato . Du kan f.eks. sende 2021-01-07 og lad SQL Server kun returnere årsdelen (2021 ).

Du kan også udtrække tidsdelen. Du kan f.eks. sende 2018-06-02 08:24:14.3112042 og lad SQL Server kun returnere timedelen (8 ).

Eksempler nedenfor.

Syntaks

Først syntaksen. DATEPART() syntaks ser sådan ud:

DATEPART ( datepart , date )

Hvor datepart er den del af date (en dato- eller tidsværdi), som et heltal vil blive returneret for.

Eksempel 1

Her er et grundlæggende eksempel, hvor jeg returnerer årskomponenten fra en dato.

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

Resultat:

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

Eksempel 2

I dette eksempel tildeler jeg en dato til en variabel, så bruger jeg flere forekomster af DATEPART() for at hente forskellige dele af den dato.

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

Eksempel 3

Du kan også hente de forskellige tidsdele fra datoen.

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

Eksempel 4

Du kan også hente TZoffset og ISO_WEEK datepart.

 TZoffset returneres som antal minutter (underskrevet). ISO_WEEK datepart refererer til ISO uge-dato-systemet (en del af ISO 8601-standarden), som er et nummereringssystem for uger.

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 dette eksempel satte jeg datoen til en datetimeoffset format, som inkluderer tidszoneforskydningen. TZoffset returneres på få minutter.

Et hurtigt alternativ

T-SQL tilbyder også en mere kortfattet måde at returnere dag-, måned- eller årskomponenter fra en dato med DAY() , MONTH() og YEAR() funktioner.

De fungerer sådan her:

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

Hent månedens navn eller dagnavnet

Hvis du har brug for at få månedsnavnet eller dagsnavnet, skal du bruge DATENAME() funktion i stedet for. Denne funktion returnerer resultaterne som en tegnstreng, og du kan returnere måneden og ugedagen efter navn. Her er nogle DATENAME() eksempler for at demonstrere, hvad jeg mener.


  1. Funktioner med variabelt antal inputparametre

  2. Vælg top tre værdier i hver gruppe

  3. Udfør regex (erstat) i en SQL-forespørgsel

  4. CURRENT_TIMESTAMP Eksempler – MySQL