In SQL Server, T-SQL DATENAME()
La funzione restituisce una stringa di caratteri 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 del mese (January
).
Il tipo restituito per DATENAME()
è nvarchar .
Esempi sotto.
Sintassi
Il DATENAME()
la sintassi va così:
DATENAME ( datepart , date )
Dove datepart
è la parte di date
(un valore di data o ora) per il quale verrà restituita una stringa di caratteri.
Esempio 1
Ecco un esempio di base in cui restituisco il componente mese da una data.
SELECT DATENAME(month, '2021-01-07') AS Result;
Risultato:
+----------+ | Result | |----------| | January | +----------+
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 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;
Risultato:
+--------+-----------+---------+---------------+-------+--------+-----------+ | Year | Quarter | Month | Day of Year | Day | Week | Weekday | |--------+-----------+---------+---------------+-------+--------+-----------| | 2018 | 2 | June | 153 | 2 | 22 | Saturday | +--------+-----------+---------+---------------+-------+--------+-----------+
Esempio 3
Puoi anche recuperare le varie fasce orarie dalla data.
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;
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 DATENAME(TZoffset, @date) AS 'Time Zone Offset', DATENAME(ISO_WEEK, @date) AS 'ISO_WEEK';
Risultato:
+--------------------+------------+ | Time Zone Offset | ISO_WEEK | |--------------------+------------| | +08:00 | 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.
I risultati di DATENAME()
somiglierà spesso ai risultati di DATEPART()
(perché la maggior parte delle parti della data è numerica). Tuttavia, DATEPART()
restituisce un numero intero anziché una stringa di caratteri. Pertanto DATEPART()
restituirà i mesi (e il componente del giorno della settimana) in forma numerica (ad es. 1
invece di January
).
Ottenere il nome breve del mese
Se hai bisogno del nome del mese, ma nella sua forma abbreviata di 3 lettere (ad esempio, Jan
invece di January
), consulta il mio articolo 5 modi per ottenere il nome del mese breve da una data in SQL Server.