Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Sistema di Piattaforma Analitica (PDW)
Database SQL in Microsoft Fabric
Questa funzione restituisce un intero che rappresenta l'elemento datepart specificato dell'elemento 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
DATEPART ( datepart , date )
Argomenti
datepart
Parte specifica dell'argomento date per cui DATEPART restituirà un intero. Questa tabella elenca tutti gli argomenti validi per datepart.
Nota
DATEPART non accetta equivalenti di variabili definite dall'utente come argomenti di datepart.
| datepart | Abbreviations |
|---|---|
| year | sì, sìì |
| quarter | qq, q |
| month | mm, m |
| dayofyear | dy, y |
| day | dd,d |
| week | WK, WW |
| weekday | dw |
| hour | hh |
| minute | mi, n |
| second | ss,s |
| millisecond | ms |
| microsecond | mcs |
| nanosecond | ns |
| tzoffset | tz |
| iso_week | Isowk, isoww |
date
Espressione che si risolve in uno dei tipi di dati seguenti:
- date
- datetime
- datetimeoffset
- datetime2
- smalldatetime
- time
Per date, DATEPART 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
int
Valore restituito
Ogni elemento datepart e le relative abbreviazioni restituiscono lo stesso valore.
Il valore di ritorno dipende dall'ambiente linguistico impostato tramite SET LANGUAGE, e dall'opzione Configura il linguaggio predefinito Server Option dell'accesso. Il valore di ritorno dipende dal SET DATEFORMATfatto che date sia una stringa letterale di alcuni formati. SET DATEFORMAT non cambia il valore del ritorno quando la data è un'espressione a colonna di un tipo di data o ora.
Questa tabella elenca tutti gli argomenti datepart, con i corrispondenti valori restituiti, per l'istruzione SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). L'argomento date ha un tipo di dati datetimeoffset(7). Le ultime due posizioni del valore restituito di nanoseconddatepart sono sempre 00 e questo valore ha una scala di 9:
.123456700
| datepart | Valore restituito |
|---|---|
| anno, yyyy, yy | 2007 |
| Quarto, Qq, Q | 4 |
| mese, mm, m | 10 |
| DayYear, Dy, Y | 303 |
| Day, dd, d | 30 |
| settimana, settimana, ww | 44 |
| Nei giorni feriali, senza problemi | 3 |
| Ora, hh | 12 |
| minuto, n | 15 |
| secondo, ss, s | 32 |
| Millisecondo, MS | 123 |
| Microsecondo, MCS | 123456 |
| nanosecondi, ns | 123456700 |
| Tzoffset, tz | 310 |
| iso_week, isowk, isoww | 44 |
Argomenti datepart per settimana e giorno feriale
Per una data settimanale (settimana, ww) o settimanale (dw), il DATEPART valore di ritorno dipende dal valore imposto da SET DATEFIRST.
Il 1° gennaio di qualsiasi anno definisce il numero iniziale per weekdatepart. Ad esempio:
DATEPART (settimana, '1 gennaio, xxxx') = 1
dove xxxx è un anno.
Questa tabella mostra il valore di ritorno per la settimana e la datadel giorno feriale per il '2007-04-21' per ogni SET DATEFIRST argomento. L'1 gennaio 2007 cade di lunedì. Il 21 aprile 2007 cade di sabato. Per l'inglese statunitense,
SET DATEFIRST 7 -- ( Sunday )
funge da valore predefinito. Dopo aver impostato DATEFIRST, usa questa istruzione SQL suggerita per i valori della tabella datepart:
SELECT DATEPART(week, '2007-04-21 '), DATEPART(weekday, '2007-04-21 ')
| SET DATEFIRST Argomento |
settimana restituito |
giorno feriale restituito |
|---|---|---|
| 1 | 16 | 6 |
| 2 | 17 | 5 |
| 3 | 17 | 4 |
| 4 | 17 | 3 |
| 5 | 17 | 2 |
| 6 | 17 | 1 |
| 7 | 16 | 7 |
Argomenti datepart per anno, mese e giorno
I valori restituiti per DATEPART (year, date), DATEPART (month, date) e DATEPART (day, date) corrispondono a quelli restituiti rispettivamente dalle funzioni YEAR, MONTH e DAY.
iso_week datepart
ISO 8601 include il sistema settimana-relativo alla data ISO, un sistema di numerazione per settimane. Ogni settimana è associata all'anno che inizia con un giovedì. Ad esempio, la settimana 1 del 2004 (2004W01) ha coperto il periodo da lunedì 29 dicembre 2003 a domenica 4 gennaio 2004. I paesi/aree europee usano in genere questo stile di numerazione. I paesi/aree geografiche non europei in genere non lo usano.
Nota: il numero massimo di settimane in un anno può essere 52 o 53.
I sistemi di numerazione dei diversi paesi potrebbero non essere conformi allo standard ISO. Questa tabella illustra sei possibilità:
| Primo giorno della settimana | Prima settimana dell'anno | Settimane assegnate due volte | Utilizzato da/in |
|---|---|---|---|
| Domenica | 1 gennaio, Primo sabato, 1-7 giorni dell'anno |
Sì | Stati Uniti |
| lunedì | 1 gennaio, Prima domenica, 1-7 giorni dell'anno |
Sì | La maggior parte di Europa e Regno Unito |
| lunedì | 4 gennaio, Primo giovedì, 4-7 giorni dell'anno |
No | ISO 8601, Norvegia e Svezia |
| lunedì | 7 gennaio, Primo lunedì, Sette giorni dell'anno |
No | |
| mercoledì | 1 gennaio, Primo martedì, 1-7 giorni dell'anno |
Sì | |
| Sabato | 1 gennaio, Primo venerdì, 1-7 giorni dell'anno |
Sì |
tzoffset
DATEPART restituisce il valore tzoffset (tz) come numero di minuti (firmato). Questa istruzione restituisce una differenza di fuso orario di 310 minuti:
SELECT DATEPART (tzoffset, '2007-05-10 00:00:01.1234567 +05:10');
DATEPART esegue il rendering del valore tzoffset come segue:
- Per datetimeoffset e datetime2, tzoffset restituisce la differenza di orario in minuti, in cui l'offset per datetime2 è sempre 0 minuti.
- Per i tipi di dati che possono essere convertiti in modo implicito in datetimeoffset o datetime2,
DATEPARTrestituisce la differenza oraria in minuti. Eccezione: altri tipi di dati date/time. - I parametri di tutti gli altri tipi generano un errore.
Argomento date smalldatetime
Per un valore smalldatetimedate, DATEPART restituisce i secondi come 00.
Valore predefinito restituito per un datepart non incluso nell'argomento date
Se per il tipo di dati dell'argomento date non viene specificato datepart, DATEPART restituirà il valore predefinito per datepart solo se è stato specificato un valore letterale per date.
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 restituisce 1900, 1, 1, 1, 2.
SELECT DATEPART(year, '12:10:30.123')
,DATEPART(month, '12:10:30.123')
,DATEPART(day, '12:10:30.123')
,DATEPART(dayofyear, '12:10:30.123')
,DATEPART(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, DATEPART 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 DATEPART(year, @t);
Secondi frazionari
Queste istruzioni illustrano che DATEPART restituisce secondi frazionari:
SELECT DATEPART(millisecond, '00:00:01.1234567'); -- Returns 123
SELECT DATEPART(microsecond, '00:00:01.1234567'); -- Returns 123456
SELECT DATEPART(nanosecond, '00:00:01.1234567'); -- Returns 123456700
Osservazioni:
DATEPART può essere usato nelle clausole select list, WHERE, HAVING, GROUP BY e ORDER BY.
DATEPART esegue il cast implicito dei valori letterali stringa come tipo datetime2 in SQL Server 2008 (10.0.x) e versioni successive. Pertanto, DATENAME non supporta 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 viene restituito l'anno di base. L'anno di base è utile nei calcoli delle date. Nell'esempio un numero specifica la data. Si noti che SQL Server interpreta il valore 0 come 1 gennaio 1900.
SELECT DATEPART(year, 0), DATEPART(month, 0), DATEPART(day, 0);
-- Returns: 1900 1 1
Questo esempio restituisce la parte relativa al giorno della data 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (day,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 20
Questo esempio restituisce la parte relativa all'anno della data 12/20/1974.
-- Uses AdventureWorks
SELECT TOP(1) DATEPART (year,'12/20/1974') FROM dbo.DimCustomer;
-- Returns: 1974