In SQL Server, la funzione T-SQL DATENAME() restituisce una stringa di caratteri che rappresenta la parte di data specificata. Per esempio, puoi passare in 2021-01-07 e avere SQL Server che restituisce solo la parte del mese (January).

Il tipo di ritorno per DATENAME() è nvarchar.

Esempi sotto.

Sintassi

La sintassi di DATENAME() va così:

DATENAME ( datepart , date )

Dove datepart è la parte di date (un valore di data o ora) per la quale sarà restituita una stringa di caratteri.

Esempio 1

Ecco un esempio base dove 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, poi uso più istanze di DATEPART() per recuperare diverse parti 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 parti di tempo 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 datario.

Il TZoffset viene restituito come numero di minuti (firmato). La parte di data ISO_WEEK si riferisce al sistema ISO week-date (parte dello standard ISO 8601) che è un sistema di numerazione per le 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 in un formato datetimeoffset, che include l’offset del fuso orario. Il TZoffset viene restituito in minuti.

I risultati di DATENAME() saranno spesso simili ai risultati di DATEPART() (a causa del fatto che la maggior parte delle parti della data sono numeriche). Tuttavia, DATEPART() restituisce un intero invece di una stringa di caratteri. Perciò DATEPART() restituirà i mesi (e il componente del giorno della settimana) in forma numerica (per esempio, 1 invece di January).

Utilizzare il nome breve del mese

Se hai bisogno del nome del mese, ma nella sua forma abbreviata, abbreviazione di 3 lettere (per esempio, Jan invece di January), controlla il mio articolo 5 modi per ottenere il nome breve del mese da una data in SQL Server.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.