DATEPART (Transact-SQL)

Viene restituito un intero che rappresenta il valore datepart dell'argomento date specificato.

Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni e tipi di dati di data e ora (Transact-SQL). Per informazioni ed esempi comuni ai tipi di dati e alle funzioni di data e ora, vedere Utilizzo di dati relativi a data e ora.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

DATEPART (datepart , date )

Argomenti

  • datepart
    Parte di date (un valore di data o ora) per la quale verrà restituito un integer. Nella tabella seguente vengono elencati tutti gli argomenti di datepart validi. Variabili definite dall'utente equivalenti non sono valide.

    datepart

    Abbreviazioni

    year

    yy, yyyy

    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 può essere risolta in un valore di tipo time, date, smalldatetime, datetime, datetime2 o datetimeoffset. I valori di tipo date possono essere costituiti da un'espressione, da un'espressione di colonna, da una variabile definita dall'utente o da un valore letterale stringa.

    Per evitare ambiguità, esprimere gli anni nel formato a quattro cifre. Per informazioni sul formato di anno a due cifre, vedere Opzione two digit year cutoff.

Tipo restituito

int

Valore restituito

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

Il valore restituito dipende dalla lingua impostata tramite 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 week e weekday di datepart

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 weekdatepart, ad esempio DATEPART (wk, 1 gen, xxxx) = 1, dove xxxx è qualsiasi anno.

Nella tabella seguente è elencato il valore restituito per week e weekdaydatepart 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

Valore week

restituito

Valore weekday

restituito

1

16

6

2

17

5

3

17

4

4

17

3

5

17

2

6

17

1

7

16

7

Argomenti year, month e day di datepart

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

Stati Uniti

Lunedì

1 gennaio,

Prima domenica,

1-7 giorni dell'anno

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

Sabato

1 gennaio,

Primo venerdì,

1-7 giorni dell'anno

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 per il tipo di dati dell'argomento date non è specificato l'argomento datepart viene 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

Osservazioni

È possibile utilizzare DATEPART in un elenco di selezione e nelle clausole WHERE, HAVING, GROUP BY e ORDER BY. In SQL Server 2008 DATEPART consente di eseguire il cast in modo implicito di valori letterali stringa come i tipi datetime2. Quando si utilizza DATEPART con DATEADD, evitare cast impliciti di valori letterali stringa. Per ulteriori informazioni, vedere DATEADD (Transact-SQL).

Esempi

Nell'esempio seguente viene restituito il valore dell'anno di base. L'anno di base è utile per i calcoli relativi alla data. Nell'esempio seguente, la data viene specificata sotto forma di numero. 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 */

Vedere anche

Riferimento