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.