Ogni valore datepart e le relative abbreviazioni restituiscono lo stesso valore.
Il valore restituito dipende dalla lingua impostata con SET LANGUAGE e dalla lingua predefinita dell'account di accesso. Se date è un valore letterale stringa per alcuni formati, il valore restituito dipende dal formato specificato utilizzando SET DATEFORMAT. SET DATEFORMAT non influisce sul valore restituito quando la data è un'espressione della colonna di un tipo di dati ora e data.
Nella tabella seguente sono elencati tutti gli argomenti datepart con i corrispondenti valori restituiti per l'istruzione SELECT DATEPART(datepart,'2007-10-30 12:15:32.1234567 +05:10'). Il tipo di dati dell'argomento date è datetimeoffset(7). Il valore restituito utilizzando nanoseconddatepart ha una scala di 9 (.123456700) e le ultime due posizioni sono sempre 00.
|
datepart
|
Valore restituito
|
|---|
|
year, yyyy, yy
|
2007
|
|
quarter, qq, q
|
4
|
|
month, mm, m
|
10
|
|
dayofyear, dy, y
|
303
|
|
day, dd, d
|
30
|
|
week, wk, ww
|
45
|
|
weekday, dw
|
1
|
|
hour, hh
|
12
|
|
minute, n
|
15
|
|
second, ss, s
|
32
|
|
millisecond, ms
|
123
|
|
microsecond, mcs
|
123456
|
|
nanosecond, ns
|
123456700
|
|
TZoffset, tz
|
310
|
Argomenti datepart per settimana e giorno feriale
Quando datepart è week (wk, ww) o weekday (dw), il valore restituito dipende dal valore impostato utilizzando SET DATEFIRST.
Il 1° gennaio di qualsiasi anno definisce il numero iniziale per week datepart, ad esempio DATEPART (wk, 1 gen, xxxx) = 1, dove xxxx è qualsiasi anno.
Nella tabella seguente è elencato il valore restituito per week e weekday datepart per "2007-04-21" per ogni argomento SET DATEFIRST. Il 1° gennaio dell'anno 2007 è domenica. Il 21 aprile dell'anno 2007 è sabato. SET DATEFIRST 7, domenica è l'impostazione predefinita per l'inglese (Stati Uniti).
|
Argomento
SET DATEFIRST
|
settimana
restituita
|
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.
datepart ISO_WEEK
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) è iniziata lunedì 29 dicembre 2003 ed è terminata domenica 4 gennaio 2004. In un anno è possibile avere al massimo 52 o 53 settimane. Questo stile di numerazione è utilizzato in genere nei paesi europei, raramente viene usato altrove.
Il sistema di numerazione nei diversi paesi potrebbe non essere conforme allo standard ISO. Ci sono almeno sei possibilità come mostra la tabella seguente
|
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ì,
7 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
TZoffset (tz) viene restituito come numero di minuti (firmato). Nell'istruzione seguente è restituita una differenza di fuso orario di 310 minuti.
SELECT DATEPART (TZoffset, 2007-05-10 00:00:01.1234567 +05:10);
Se l'argomento datepart è TZoffset (tz) e l'argomento date non è di tipo di dati datetimeoffset, viene restituito il valore NULL.
Argomento date smalldatetime
Quando date è smalldatetime, i secondi vengono restituiti come 00.
Valore predefinito restituito per un datepart non incluso nell'argomento date
Se il tipo di dati dell'argomento date non ha il datepart specificato, verrà restituita l'impostazione predefinita per datepart.
Ad esempio, l'anno-mese-giorno predefinito per qualsiasi tipo di dati date è 1900-01-01. L'istruzione seguente ha argomenti di parti di data per datepart, un argomento relativo all'ora 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');
Il valore ora-minuto-secondo predefinito per il tipo di dati time è 00:00:00. L'istruzione seguente ha argomenti di parti di ora per datepart, un argomento relativo alla data per date restituisce 0, 0, 0.
SELECT DATEPART(hour, '2007-06-01')
,DATEPART(minute, '2007-06-01')
,DATEPART(second, '2007-06-01');
Secondi frazionari
Secondi frazionari vengono restituiti come indicato nelle istruzioni seguenti:
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