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

DATEPART() Esempi in SQL Server

In SQL Server, T-SQL DATEPART() la funzione restituisce un numero intero che rappresenta la parte di data specificata della data specificata . Ad esempio, puoi trasmettere 2021-01-07 e fare in modo che SQL Server restituisca solo la parte dell'anno (2021 ).

Puoi anche estrarre la parte del tempo. Ad esempio, puoi passare 2018-06-02 08:24:14.3112042 e fare in modo che SQL Server restituisca solo la parte dell'ora (8 ).

Esempi sotto.

Sintassi

Innanzitutto la sintassi. Il DATEPART() la sintassi va così:

DATEPART ( datepart , date )

Dove datepart è la parte di date (un valore di data o ora) per il quale verrà restituito un numero intero.

Esempio 1

Ecco un esempio di base in cui restituisco il componente anno da una data.

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

Risultato:

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

Esempio 2

In questo esempio assegno una data a una variabile, quindi utilizzo più istanze di DATEPART() per recuperare parti diverse di quella data.

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;

Risultato:

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

Esempio 3

Puoi anche recuperare le varie fasce orarie dalla data.

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;

Risultato:

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

Esempio 4

Puoi anche recuperare il TZoffset e il ISO_WEEK datapart.

Il TZoffset viene restituito come numero di minuti (firmato). Il ISO_WEEK datepart si riferisce al sistema di data settimanale ISO (parte dello standard ISO 8601) che è un sistema di numerazione per settimane.

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

Risultato:

+--------------------+------------+
| Time Zone Offset   | ISO_WEEK   |
|--------------------+------------|
| 480                | 22         |
+--------------------+------------+

In questo esempio, ho impostato la data su un datetimeoffset formato, che include l'offset del fuso orario. Il TZoffset viene restituito in pochi minuti.

Una rapida alternativa

T-SQL offre anche un modo più conciso per restituire i componenti giorno, mese o anno da una data con DAY() , MONTH() e YEAR() funzioni.

Funzionano così:

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

Risultato:

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

Ottenere il nome del mese o del giorno

Se devi ottenere il nome del mese o del giorno, utilizza DATENAME() funzione invece. Questa funzione restituisce i risultati come una stringa di caratteri ed è possibile restituire il mese e il giorno della settimana in base al nome. Ecco alcuni DATENAME() esempi per dimostrare cosa intendo.