datetime2 (Transact-SQL)

Definisce una data costituita dalla combinazione con un'ora del giorno espressa nel formato 24 ore. datetime2 può essere considerato un'estensione del tipo datetime esistente con un più ampio intervallo di date, una maggiore precisione frazionaria predefinita e una precisione specificata dall'utente facoltativa.

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.

Descrizione di datetime2

Proprietà

Valore

Sintassi

datetime2 [ (fractional seconds precision) ]

Utilizzo

DECLARE @MyDatetime2 datetime2(7)

CREATE TABLE Table1 ( Column1 datetime2(7) )

Formato predefinito dei valori letterali stringa

(utilizzato per client legacy)

AAAA-MM-GG hh:mm:ss[.secondi frazionari]

Per ulteriori informazioni, vedere la sezione relativa alla compatibilità con le versioni precedenti per i client legacy nell'argomento Utilizzo di dati relativi a data e ora.

Intervallo di date

Da 0001-01-01 a 9999-12-31

Da 1 gennaio 1 d.C. a 31 dicembre 9999 d.C

Intervallo di ore

Da 00:00:00 a 23:59:59.9999999

Intervallo di differenze di fuso orario

Nessuno

Intervalli di elementi

AAAA rappresenta un numero di quattro cifre compreso tra 0001 e 9999, indicante l'anno.

MM rappresenta un numero di due cifre compreso tra 01 e 12, indicante un mese dell'anno specificato.

GG rappresenta un numero di due cifre compreso tra 01 e 31, a seconda del mese, indicante il giorno del mese specificato.

hh rappresenta un numero di due cifre compreso tra 00 e 23, indicante l'ora.

mm rappresenta un numero di due cifre compreso tra 00 e 59, indicante i minuti.

ss rappresenta un numero di due cifre compreso tra 00 e 59, indicante i secondi.

n* rappresenta un numero composto da 0 a 7 cifre e compreso tra 0 e 9999999, indicante i secondi frazionari.

Lunghezza in caratteri

Da un minimo di 19 posizioni (AAAA-MM-GG hh:mm:ss ) a un massimo di 27 posizioni (AAAA-MM-GG hh:mm:ss.0000000)

Precisione, scala

Da 0 a 7 cifre, con un'accuratezza di 100 nanosecondi. La precisione predefinita è 7 cifre.

Dimensioni dello spazio di archiviazione

6 byte per le precisioni minori di 3; 7 byte per le precisioni 3 e 4. Tutte le altre precisioni richiedono 8 byte.

Accuratezza

100 nanosecondi

Valore predefinito

1900-01-01 00:00:00

Calendario

Gregoriano

Precisione in secondi frazionari definita dall'utente

Considerazione e conservazione delle differenze di fuso orario

No

Considerazione dell'ora legale

No

Per i metadati del tipo di dati, vedere sys.systypes (Transact-SQL) o TYPEPROPERTY (Transact-SQL). Precisione e scala sono variabili per alcuni tipi di dati di data e ora. Per ottenere precisione e scala per una colonna, vedere COLUMNPROPERTY (Transact-SQL), COL_LENGTH (Transact-SQL) o sys.columns (Transact-SQL).

Formati di valore letterale stringa supportati per datetime2

Nelle tabelle seguenti sono elencati i formati di valore letterale stringa ISO 8601 e ODBC supportati per datetime2. Per informazioni sui formati alfabetico, numerico, non separato e ora per le parti di data e ora di datetime2, vedere date (Transact-SQL) e time (Transact-SQL).

ISO 8601

Descrizione

AAAA-MM-GGThh:mm:ss[.nnnnnnn]

AAAA-MM-GGThh:mm:ss[.nnnnnnn]

Su questo formato non influiscono le impostazioni locali delle sessioni SET LANGUAGE e SET DATEFORMAT. Il carattere T, i due punti (:) e il punto (.) sono inclusi nel valore letterale stringa, ad esempio '2007-05-02T19:58:47.1234567'.

ODBC

Descrizione

{ ts 'aaaa-mm-gg hh:mm:ss[.secondi frazionari]' }

Specifico delle API ODBC:

  • Il numero di cifre a destra del separatore decimale che rappresenta i secondi frazionari comprende da 0 a 7 cifre (100 nanosecondi).

  • In SQL Server 2008, con livello di compatibilità impostato su 10 il valore letterale eseguirà il mapping internamente al tipo time nuovo.

Conformità agli standard ANSI e ISO 8601

La conformità agli standard ANSI e ISO 8601 di date e time è applicata a datetime2.

Esempi

Nell'esempio seguente vengono confrontati i risultati dell'esecuzione del cast di una stringa ai tipi di dati date e time.

SELECT 
     CAST('2007-05-08 12:35:29. 1234567 +12:15' AS time(7)) AS 'time' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS date) AS 'date' 
    ,CAST('2007-05-08 12:35:29.123' AS smalldatetime) AS 
        'smalldatetime' 
    ,CAST('2007-05-08 12:35:29.123' AS datetime) AS 'datetime' 
    ,CAST('2007-05-08 12:35:29. 1234567 +12:15' AS datetime2(7)) AS 
        'datetime2'
    ,CAST('2007-05-08 12:35:29.1234567 +12:15' AS datetimeoffset(7)) AS 
        'datetimeoffset';

Set di risultati:

Tipo di dati

Output

time

12:35:29. 1234567

date

2007-05-08

smalldatetime

2007-05-08 12:35:00

datetime

2007-05-08 12:35:29.123

datetime2

2007-05-08 12:35:29. 1234567

datetimeoffset

2007-05-08 12:35:29.1234567 +12:15