datetimeoffset (Transact-SQL)
Definisce una data in combinazione con un'ora del giorno con considerazione del fuso orario ed espressa nel formato 24 ore.
Per una panoramica di tutti i tipi di dati e delle funzioni di data e ora Transact-SQL, vedere Funzioni 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 datetimeoffset
Proprietà |
Valore |
---|---|
Sintassi |
datetimeoffset [ (fractional seconds precision) ] |
Utilizzo |
DECLARE @MyDatetimeoffset datetimeoffset(7) CREATE TABLE Table1 ( Column1 datetimeoffset(7) ) |
Formati predefiniti per i valori letterali stringa (utilizzati per il client legacy) |
AAAA-MM-GG hh:mm:ss[.nnnnnnn] [{+|-}hh:mm] 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 dal 1 gennaio 1 d.C. al 31 dicembre 9999 d.C. |
Intervallo di ore |
da 00:00:00 a 23:59:59.9999999 |
Intervallo di differenze di fuso orario |
|
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 un numero di cifre da 0 a 7 e compreso tra 0 e 9999999, indicante i secondi frazionari. hh rappresenta un numero di due cifre compreso tra -14 e +14. mm rappresenta un numero di due cifre compreso tra 00 e 59. |
Lunghezza in caratteri |
Da un minimo di 26 posizioni (AAAA-MM-GG hh:mm:ss {+|-}hh:mm) a un massimo di 34 (AAAA-MM-GG hh:mm:ss.nnnnnnn {+|-}hh:mm) |
Precisione, scala |
Scala specificataRisultato (precisione, scala)Lunghezza della colonna (byte)Precisione in secondi frazionari
datetimeoffset (34,7)107
datetimeoffset(0) (26,0)80-2
datetimeoffset(1) (28,1)80-2
datetimeoffset(2) (29,2)80-2
datetimeoffset(3) (30,3)93-4
datetimeoffset(4) (31,4)93-4
datetimeoffset(5) (32,5)105-7
datetimeoffset(6) (33,6)105-7
datetimeoffset(7) (34,7)105-7
|
Dimensioni dello spazio di archiviazione |
10 byte, fissa è l'impostazione predefinita con l'impostazione predefinita di 100 ns di precisione in secondi frazionari. |
Accuratezza |
100 nanosecondi |
Valore predefinito |
1900-01-01 00:00:00 00:00 |
Calendario |
Gregoriano |
Precisione in secondi frazionari definita dall'utente |
Sì |
Considerazione e conservazione delle differenze di fuso orario |
Sì |
Considerazione dell'ora legale |
No |
Formati di valore letterale stringa supportati per datetimeoffset
Nella tabella seguente sono elencati i formati di valore letterale stringa ISO 8601 supportati per datetimeoffset. Per informazioni sui formati alfabetico, numerico, non separato e ora per le parti della data e dell'ora di datetimeoffset, vedere date (Transact-SQL) e time (Transact-SQL).
ISO 8601 |
Descrizione |
---|---|
AAAA-MM-GGThh:mm:ss[.nnnnnnn][{+|-}hh:mm] |
Su questi due formati non influiscono le impostazioni locali delle sessioni SET LANGUAGE e SET DATEFORMAT. Non sono consentiti spazi tra datetimeoffset e datetime. |
AAAA-MM-GGThh:mm:ss[.nnnnnnn]Z (UTC) |
In base alla definizione ISO questo formato indica che la parte datetime deve essere espressa in formato UTC (Coordinated Universal Time). Ad esempio, 1999-12-12 12:30:30.12345 -07: 00 deve essere rappresentata come 1999-12-12 19:30:30.12345Z. |
Differenza di fuso orario
Una differenza di fuso orario specifica la differenza di fuso orario rispetto all'ora UTC per un valore time o datetime. La differenza di fuso orario può essere rappresentata nel formato [+|-] hh:mm:
hh è un numero di due cifre, compreso tra 00 e 14, che rappresenta il numero di ore della differenza di fuso orario.
mm è un numero di due cifre, compreso tra 00 e 59, che rappresenta il numero di minuti aggiuntivi della differenza di fuso orario.
+ (più) o - (meno) è il segno obbligatorio per la differenza di fuso orario. Indica se la differenza di fuso orario viene aggiunta o sottratta dall'ora UTC per ottenere l'ora locale. L'intervallo valido per la differenza di fuso orario va da -14:00 a +14:00.
L'intervallo di differenza di fuso orario segue lo standard XML W3C per la definizione di schemi XSD, leggermente diverso dalla definizione standard di SQL 2003, da 12:59 a +14:00.
Il parametro facoltativo fractional seconds precision specifica il numero di cifre per la parte relativa ai secondi frazionari. Questo valore può essere un numero intero con un numero di cifre compreso tra 0 e 7 (100 nanosecondi). Il valore predefinito di fractional seconds precision è 100 ns (sette cifre per la parte relativa ai secondi frazionari).
I dati sono archiviati nel database ed elaborati, confrontati, ordinati e indicizzati nel server come in UTC. La differenza di fuso orario viene mantenuta nel database per il recupero.
La differenza di fuso orario specificata deve essere sensibile all'ora legale e regolata sui valori di datetime appartenenti al periodo in cui è in vigore l'ora legale.
Per il tipo datetimeoffset, i valori datetime UTC e locali (per la differenza di fuso orario persistente o convertita), vengono convalidati durante le operazioni aritmetiche e di inserimento, aggiornamento, conversione o assegnazione. Il rilevamento di qualsiasi valore datetime UTC o locale (per la differenza di fuso orario persistente o convertita) non valido genera un errore "Valore non valido". Ad esempio, 9999-12-31 10:10:00 è valido in UTC ma causa overflow nell'ora locale per la differenza di fuso orario +13:50.
Conformità agli standard ANSI e ISO 8601
Le sezioni sulla conformità agli standard ANSI e ISO 8601 degli argomenti date e time si applicano a datetimeoffset.
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'
,CAST('2007-05-08 12:35:29.1234567+12:15' AS datetimeoffset(7)) AS
'datetimeoffset IS08601';
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 |
Vedere anche