Condividi tramite


DATENAME (Transact-SQL)

Si applica a: SQL Server Database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics Piattaforma di strumenti analitici (PDW)

Questa funzione restituisce una stringa di caratteri che rappresenta l'elemento datepart specificato dell'argomento date indicato.

Per una panoramica di tutti i tipi di dati e funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL).

Convenzioni relative alla sintassi Transact-SQL

Sintassi

DATENAME ( datepart , date )  

Argomenti

datepart
Parte specifica dell'argomento date che verrà restituito da DATENAME. Questa tabella elenca tutti gli argomenti validi per datepart.

Nota

DATENAME non accetta equivalenti di variabili definite dall'utente come argomenti di datepart.

datepart Abbreviations
year yy, yyyy
quarter qq, q
month mm, m
dayofyear dy, y
day dd, d
week wk, ww
weekday dw, w
hour hh
minute mi, n
second ss, s
millisecond ms
microsecond mcs
nanosecond ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Espressione che può risolversi in uno dei tipi di dati seguenti:

  • date
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Per date, DATENAME accetta un'espressione di colonna, un'espressione, un valore letterale stringa o una variabile definita dall'utente. Per evitare problemi di ambiguità, esprimere gli anni nel formato a quattro cifre. Per informazioni sugli anni a due cifre, vedere Configurare l'opzione di configurazione del server Cambio data per anno a due cifre.

Tipo restituito

nvarchar

Valore restituito

  • Ogni elemento datepart e le relative abbreviazioni restituiscono lo stesso valore.

Il valore restituito dipende dalla lingua impostata tramite SET LANGUAGE e in Configurare l'opzione di configurazione del server default language dell'account di accesso. Il valore restituito dipende da SET DATEFORMAT se date è un valore letterale stringa di alcuni formati. SET DATEFORMAT non modifica il valore restituito quando la data è un'espressione della colonna di un tipo di dati ora e data.

Quando il parametro date ha un argomento del tipo di dati date, il valore restituito dipende dall'impostazione specificata da SET DATEFIRST.

Argomento datepart TZoffset

Se l'argomento datepart è TZoffset (tz) e l'argomento date non prevede una differenza di fuso orario, DATEADD restituisce 0.

Argomento date smalldatetime

Quando date è smalldatetime, DATENAME restituisce i secondi come 00.

Valore predefinito restituito per un argomento datepart non incluso nell'argomento date

Se per il tipo di dati dell'argomento date non viene specificato datepart, DATENAME restituirà il valore predefinito per datepart solo se l'argomento date ha un valore letterale.

Ad esempio, l'anno-mese-giorno predefinito per qualsiasi tipo di dati date è 1900-01-01. Questa istruzione include gli argomenti datepart per datepart, un argomento time per date e DATENAME restituisce 1900, January, 1, 1, Monday.

SELECT DATENAME(year, '12:10:30.123')  
    ,DATENAME(month, '12:10:30.123')  
    ,DATENAME(day, '12:10:30.123')  
    ,DATENAME(dayofyear, '12:10:30.123')  
    ,DATENAME(weekday, '12:10:30.123');  

Se date viene specificato come variabile o colonna di tabella e per il tipo di dati della variabile o della colonna datepart non viene specificato, DATENAME restituirà l'errore 9810. In questo esempio la variabile @t ha il tipo di dati time. L'esempio ha esito negativo perché la parte della data year non è valida per il tipo di dati time:

DECLARE @t time = '12:10:30.123';   
SELECT DATENAME(year, @t);  

Osservazioni:

Usare DATENAME nelle clausole seguenti:

  • GROUP BY
  • HAVING
  • ORDER BY
  • SELECT <list>
  • WHERE

In SQL Server, DATENAME consente di eseguire in modo implicito il cast di valori letterali stringa in un tipo datetime2. DATENAME non supporta quindi il formato AGM se la data viene passata come stringa. Per usare il formato AGM è necessario eseguire il cast della stringa in modo esplicito in un tipo datetime o smalldatetime.

Esempi

In questo esempio vengono restituite le parti della data specificata. Sostituire un valore datepart della tabella per l'argomento datepart nell'istruzione SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');

Il set di risultati è il seguente.

datepart Valore restituito
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m ottobre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Martedì
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)

In questo esempio vengono restituite le parti della data specificata. Sostituire un valore datepart della tabella per l'argomento datepart nell'istruzione SELECT:

SELECT DATENAME(datepart,'2007-10-30 12:15:32.1234567 +05:10');  

Il set di risultati è il seguente.

datepart Valore restituito
year, yyyy, yy 2007
quarter, qq, q 4
month, mm, m ottobre
dayofyear, dy, y 303
day, dd, d 30
week, wk, ww 44
weekday, dw Martedì
hour, hh 12
minute, n 15
second, ss, s 32
millisecond, ms 123
microsecond, mcs 123456
nanosecond, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Vedi anche

CAST e CONVERT (Transact-SQL)