DATENAME (Transact-SQL)DATENAME (Transact-SQL)

SI APPLICA A: sìSQL Server sìDatabase SQL di Azure sìAzure Synapse Analytics (SQL DW) sìParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel Data Warehouse

Questa funzione restituisce una stringa di caratteri che rappresenta l'elemento datepart specificato dell'argomento date indicato.This function returns a character string representing the specified datepart of the specified date.

Vedere Funzioni e tipi di dati di data e ora (Transact-SQL) per una panoramica di tutti i tipi di dati e delle funzioni di data e ora di Transact-SQLTransact-SQL.See Date and Time Data Types and Functions (Transact-SQL) for an overview of all Transact-SQLTransact-SQL date and time data types and functions.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintassiSyntax

DATENAME ( datepart , date )  

ArgomentiArguments

datepartdatepart
Parte specifica dell'argomento date che verrà restituito da DATENAME.The specific part of the date argument that DATENAME will return. Questa tabella elenca tutti gli argomenti validi per datepart.This table lists all valid datepart arguments.

Nota

DATENAME non accetta equivalenti di variabili definite dall'utente come argomenti di datepart.DATENAME does not accept user-defined variable equivalents for the datepart arguments.

datepartdatepart AbbreviazioniAbbreviations
yearyear yy, yyyyyy, yyyy
quarterquarter qq, qqq, q
monthmonth mm, mmm, m
dayofyeardayofyear dy, ydy, y
dayday dd, ddd, d
weekweek wk, wwwk, ww
weekdayweekday dw, wdw, w
hourhour hhhh
minuteminute mi, nmi, n
secondsecond ss, sss, s
millisecondmillisecond msms
microsecondmicrosecond mcsmcs
nanosecondnanosecond nsns
TZoffsetTZoffset tztz
ISO_WEEKISO_WEEK ISOWK, ISOWWISOWK, ISOWW

datadate

Espressione che può risolversi in uno dei tipi di dati seguenti:An expression that can resolve to one of the following data types:

  • datadate
  • datetimedatetime
  • datetimeoffsetdatetimeoffset
  • datetime2datetime2
  • smalldatetimesmalldatetime
  • timetime

Per date, DATENAME accetta un'espressione di colonna, un'espressione, un valore letterale stringa o una variabile definita dall'utente.For date, DATENAME will accept a column expression, expression, string literal, or user-defined variable. Per evitare problemi di ambiguità, esprimere gli anni nel formato a quattro cifre.Use four-digit years to avoid ambiguity issues. Per informazioni sugli anni a due cifre, vedere Configurare l'opzione di configurazione del server Cambio data per anno a due cifre.See Configure the two digit year cutoff Server Configuration Option for information about two-digit years.

Tipo restituitoReturn Type

nvarcharnvarchar

Valore restituitoReturn Value

  • Ogni elemento datepart e le relative abbreviazioni restituiscono lo stesso valore.Each datepart and its abbreviations return the same value.

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.The return value depends on the language environment set by using SET LANGUAGE, and by the Configure the default language Server Configuration Option of the login. Il valore restituito dipende da SET DATEFORMAT se date è un valore letterale stringa di alcuni formati.The return value depends on SET DATEFORMAT if date is a string literal of some formats. SET DATEFORMAT non modifica il valore restituito quando la data è un'espressione della colonna di un tipo di dati ora e data.SET DATEFORMAT does not change the return value when the date is a column expression of a date or time data type.

Quando il parametro date ha un argomento del tipo di dati date, il valore restituito dipende dall'impostazione specificata da SET DATEFIRST.When the date parameter has a date data type argument, the return value depends on the setting specified by SET DATEFIRST.

Argomento datepart TZoffsetTZoffset datepart Argument

Se l'argomento datepart è TZoffset (tz) e l'argomento date non prevede una differenza di fuso orario, DATEADD restituisce 0.If the datepart argument is TZoffset (tz) and the date argument has no time zone offset, DATEADD returns 0.

Argomento date smalldatetimesmalldatetime date Argument

Quando date è smalldatetime, DATENAME restituisce i secondi come 00.When date is smalldatetime, DATENAME returns seconds as 00.

Valore predefinito restituito per un argomento datepart non incluso nell'argomento dateDefault Returned for a datepart That Is Not in the date Argument

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.If the data type of the date argument does not have the specified datepart, DATENAME will return the default for that datepart only if the date argument has a literal .

Ad esempio, l'anno-mese-giorno predefinito per qualsiasi tipo di dati date è 1900-01-01.For example, the default year-month-day for any date data type is 1900-01-01. Questa istruzione include gli argomenti datepart per datepart, un argomento time per date e DATENAME restituisce 1900, January, 1, 1, Monday.This statement has date part arguments for datepart, a time argument for date, and DATENAME returns 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.If date is specified as a variable or table column, and the data type for that variable or column does not have the specified datepart, DATENAME will return error 9810. In questo esempio la variabile @t ha il tipo di dati time.In this example, variable @t has a time data type. L'esempio ha esito negativo perché la parte della data year non è valida per il tipo di dati time:The example fails because the date part year is invalid for the time data type:

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

RemarksRemarks

Usare DATENAME nelle clausole seguenti:Use DATENAME in the following clauses:

  • GROUP BYGROUP BY
  • HAVINGHAVING
  • ORDER BYORDER BY
  • SELECT <list>SELECT <list>
  • WHEREWHERE

In SQL ServerSQL Server DATENAME consente di eseguire in modo implicito il cast di valori letterali stringa in un tipo datetime2.In SQL ServerSQL Server, DATENAME implicitly casts string literals as a datetime2 type. DATENAME non supporta quindi il formato AGM se la data viene passata come stringa.In other words, DATENAME does not support the format YDM when the date is passed as a string. Per usare il formato AGM è necessario eseguire il cast della stringa in modo esplicito in un tipo datetime o smalldatetime.You must explicitly cast the string to a datetime or smalldatetime type to use the YDM format.

EsempiExamples

In questo esempio vengono restituite le parti della data specificata.This example returns the date parts for the specified date. Sostituire un valore datepart della tabella per l'argomento datepart nell'istruzione SELECT:Substitute a datepart value from the table for the datepart argument in the SELECT statement:

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

Set di risultati:Here is the result set.

datepartdatepart Valore restituitoReturn value
year, yyyy, yyyear, yyyy, yy 20072007
quarter, qq, qquarter, qq, q 44
month, mm, mmonth, mm, m OttobreOctober
dayofyear, dy, ydayofyear, dy, y 303303
day, dd, dday, dd, d 3030
week, wk, wwweek, wk, ww 4444
weekday, dwweekday, dw MartedìTuesday
hour, hhhour, hh 1212
minute, nminute, n 1515
second, ss, ssecond, ss, s 3232
millisecond, msmillisecond, ms 123123
microsecond, mcsmicrosecond, mcs 123456123456
nanosecond, nsnanosecond, ns 123456700123456700
TZoffset, tzTZoffset, tz 310310
ISO_WEEK, ISOWK, ISOWWISO_WEEK, ISOWK, ISOWW 4444

Azure Synapse Analytics (SQL DW)Azure Synapse Analytics (SQL DW) e Parallel Data WarehouseParallel Data Warehouseand Parallel Data WarehouseParallel Data Warehouse

In questo esempio vengono restituite le parti della data specificata.This example returns the date parts for the specified date. Sostituire un valore datepart della tabella per l'argomento datepart nell'istruzione SELECT:Substitute a datepart value from the table for the datepart argument in the SELECT statement:

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

Set di risultati:Here is the result set.

datepartdatepart Valore restituitoReturn value
year, yyyy, yyyear, yyyy, yy 20072007
quarter, qq, qquarter, qq, q 44
month, mm, mmonth, mm, m OttobreOctober
dayofyear, dy, ydayofyear, dy, y 303303
day, dd, dday, dd, d 3030
week, wk, wwweek, wk, ww 4444
weekday, dwweekday, dw MartedìTuesday
hour, hhhour, hh 1212
minute, nminute, n 1515
second, ss, ssecond, ss, s 3232
millisecond, msmillisecond, ms 123123
microsecond, mcsmicrosecond, mcs 123456123456
nanosecond, nsnanosecond, ns 123456700123456700
TZoffset, tzTZoffset, tz 310310
ISO_WEEK, ISOWK, ISOWWISO_WEEK, ISOWK, ISOWW 4444

Vedere ancheSee also

CAST e CONVERT (Transact-SQL)CAST and CONVERT (Transact-SQL)