DATENAME (Transact-SQL)

  • 07/29/2017
  • 3 minuti per leggere
    • c
    • j
    • r
    • M
    • M
    • +9

Si applica a: SQL Server (tutte le versioni supportate) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse

Questa funzione restituisce una stringa di caratteri che rappresenta la parte di data specificata della data specificata.

Vedi Tipi di dati e funzioni di data e ora (Transact-SQL) per una panoramica di tutti i tipi di dati e funzioni Transact-SQL.

Convenzioni di sintassi Transact-SQL

Sintassi

DATENAME ( datepart , date ) 

Nota

Per vedere la sintassi Transact-SQL per SQL Server 2014 e precedenti, vedere la documentazione delle versioni precedenti.

Argomenti

datepart
La parte specifica dell’argomento data che DATENAME restituirà. Questa tabella elenca tutti gli argomenti datapart validi.

Nota

DATENAME non accetta equivalenti variabili definite dall’utente per gli argomenti datapart.

datepart Abbreviazioni
anno yy, yyyy
trimestre qq, q
mese mm, m
giorno dell’anno dy, y
giorno dd, d
settimana wk, ww
giorno della settimana dw, w
ora hh
minuto mi, n
secondo ss, s
millisecondo ms
microsecondo mcs
nanosecondo ns
TZoffset tz
ISO_WEEK ISOWK, ISOWW

date

Un’espressione che può risolversi in uno dei seguenti tipi di dati:

  • data
  • datetime
  • datetimeoffset
  • datetime2
  • smalldatetime
  • time

Per la data, DATENAME accetta un’espressione di colonna, espressione, letterale di stringa o variabile definita dall’utente. Usa anni a quattro cifre per evitare problemi di ambiguità. Vedere Configurare il limite di due cifre per l’anno Opzione di configurazione del server per informazioni sugli anni a due cifre.

Tipo di ritorno

nvarchar

Valore di ritorno

  • Ogni datapart e le sue abbreviazioni restituiscono lo stesso valore.

Il valore di ritorno dipende dall’ambiente linguistico impostato usando SET LANGUAGE, e dall’opzione Configura la lingua di default del server di configurazione del login. Il valore di ritorno dipende da SET DATEFORMAT se la data è una stringa letterale di alcuni formati. SET DATEFORMAT non cambia il valore di ritorno quando la data è un’espressione di colonna di un tipo di dati data o ora.

Quando il parametro data ha un argomento di tipo data, il valore di ritorno dipende dall’impostazione specificata da SET DATEFIRST.

TZoffset datepart Argument

Se l’argomento datepart è TZoffset (tz) e l’argomento data non ha offset di fuso orario, DATEADD ritorna 0.

smalldatetime date Argomento

Quando la data è smalldatetime, DATENAME restituisce i secondi come 00.

Il default restituito per una parte di data che non è nell’argomento date

Se il tipo di dati dell’argomento date non ha la parte di data specificata, DATENAME restituisce il default per quella parte di data solo se l’argomento date ha un letterale .

Per esempio, il default anno-mese-giorno per qualsiasi tipo di dati date è 1900-01-01. Questa dichiarazione ha argomenti data part 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 la data è specificata come variabile o colonna di tabella, e il tipo di dati per quella variabile o colonna non ha il datepart specificato, DATENAME restituirà l’errore 9810. In questo esempio, la variabile @t ha un tipo di dati time. L’esempio fallisce perché la parte data anno non è valida per il tipo di dati tempo:

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

Remarks

Utilizzate DATENAME nelle seguenti clausole:

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

In SQL Server, DATENAME lancia implicitamente i letterali stringa come tipo datetime2. In altre parole, DATENAME non supporta il formato YDM quando la data viene passata come stringa. Dovete castare esplicitamente la stringa in un tipo datetime o smalldatetime per usare il formato YDM.

Esempi

Questo esempio restituisce le parti di data per la data specificata. Sostituisci un valore di parte di data dalla tabella per l’argomento datepart nell’istruzione SELECT:

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

Ecco il risultato.

datepart Valore di ritorno
anno, yyyy, yy 2007
trimestre, qq, q 4
mese, mm, m ottobre
giorno dell’anno, dy, y 303
giorno, dd, d 30
settimana, wk, ww 44
giorno della settimana, dw martedì
ora, hh 12
minuto, n 15
secondo, ss, s 32
millisecondo, ms 123
microsecondo, mcs 123456
nanosecondo, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Azure Synapse Analytics and Parallel Data Warehouse

Questo esempio restituisce le parti di data per la data specificata. Sostituisci un valore di parte di data dalla tabella per l’argomento datepart nell’istruzione SELECT:

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

Ecco il risultato.

datepart Valore di ritorno
anno, yyyy, yy 2007
trimestre, qq, q 4
mese, mm, m ottobre
giorno dell’anno, dy, y 303
giorno, dd, d 30
settimana, wk, ww 44
giorno settimanale, dw martedì
ora, hh 12
minuto, n 15
secondo, ss, s 32
millisecondo, ms 123
microsecondo, mcs 123456
nanosecondo, ns 123456700
TZoffset, tz +05:10
ISO_WEEK, ISOWK, ISOWW 44

Vedi anche

CAST e CONVERT (Transact-SQL)

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.