datetime (Transact-SQL)
Definisce una data costituita dalla combinazione di un'ora del giorno e di secondi frazionari ed espressa nel formato 24 ore.
Nota
Utilizzare i tipi di dati time, date, datetime2 e datetimeoffset per un nuovo lavoro. Questi tipi sono conformi allo standard SQL. e offrono una migliore portabilità. I tipi time, datetime2 e datetimeoffset offrono una maggiore precisione dei secondi. Il tipo datetimeoffset offre il supporto del fuso orario per le applicazioni distribuite globalmente.
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 datetime
Proprietà |
Valore |
---|---|
Sintassi |
datetime |
Utilizzo |
DECLARE @MyDatetime datetime CREATE TABLE Table1 ( Column1 datetime ) |
Formati predefiniti dei valori letterali stringa (utilizzati per client legacy) |
Non applicabile |
Intervallo di date |
1 gennaio 1753 - 31 dicembre 9999 |
Intervallo di ore |
Da 00:00:00 a 23:59:59.997 |
Intervallo di differenze di fuso orario |
Nessuno |
Intervalli di elementi |
AAAA rappresenta un numero di quattro cifre compreso tra 1753 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 3 e compreso tra 0 e 999, indicante i secondi frazionari. |
Lunghezza in caratteri |
Da 19 posizioni minimo a 23 massimo |
Dimensioni dello spazio di archiviazione |
8 byte |
Accuratezza |
Arrotondato a incrementi di 0,000, 0,003 o 0,007 secondi |
Valore predefinito |
1900-01-01 00:00:00 |
Calendario |
Gregoriano. Non è incluso l'intervallo completo di anni. |
Precisione in secondi frazionari definita dall'utente |
No |
Considerazione e conservazione delle differenze di fuso orario |
No |
Considerazione dell'ora legale |
No |
Formati di valore letterale stringa supportati per datetime
Nelle tabelle seguenti sono elencati i formati di valore letterale stringa supportati per datetime. I valori letterali stringa datetime sono compresi tra virgolette singole ('), ad esempio, 'string_literaL'. Fa eccezione ODBC. Se l'ambiente è diverso da us_english, i valori letterali stringa devono essere nel formato N'string_literaL'.
Espressione numerica |
Descrizione |
---|---|
Formati di data: [0]4/15/[19]96 -- (mga) [0]4-15-[19]96 -- (mga) [0]4.15.[19]96 -- (mga) [0]4/[19]96/15 -- (mag) 15/[0]4/[19]96 -- (gma) 15/[19]96/[0]4 -- (gam) [19]96/15/[0]4 -- (agm) [19]96/[0]4/15 -- (amg) Formati di ora: 14:30 14:30[:20:999] 14:30[:20.9] 4am 4 PM |
È possibile specificare i dati relativi alla data specificando il mese in formato numerico. Ad esempio, 5/20/97 rappresenta il ventesimo giorno di maggio 1997. Quando si utilizza il formato di data numerico, specificare il mese, il giorno e l'anno all'interno della stessa stringa utilizzando come separatori la barra (/), il segno meno (-) o il punto (.). Il formato corretto è il seguente:
Quando l'impostazione della lingua è us_english, l'ordine predefinito di visualizzazione della data è mga. È possibile modificare il formato di data utilizzando l'istruzione SET DATEFORMAT. L'impostazione dell'istruzione SET DATEFORMAT determina la modalità di interpretazione dei valori di data. Se l'ordine non corrisponde all'impostazione, i valori non vengono interpretati come date perché non compresi nell'intervallo valido oppure non vengono interpretati correttamente. La data 12/10/08 può ad esempio essere interpretata in sei modi diversi a seconda dell'impostazione di DATEFORMAT. Un anno in quattro parti è interpretato come anno. |
Espressione alfabetica |
Descrizione |
---|---|
Apr[ile] [15][,] 1996 Apr[ile] 15[,] [19]96 Apr[ile] 1996 [15] [15] Apr[ile][,] 1996 15 Apr[ile][,][19]96 15 [19]96 apr[ile] [15] 1996 apr[ile] 1996 APR[ILE] [15] 1996 [15] APR[ILE] |
È possibile specificare dati relativi alla data con il mese specificato con il nome completo. Ad esempio, aprile o l'abbreviazione del mese di aprile specificata nel linguaggio corrente. Le virgole sono facoltative e l'uso delle maiuscole è ignorato. Di seguito vengono riportate alcune linee guida per l'utilizzo dei formati di data alfabetici:
Quando si specifica il mese in formato alfabetico, l'impostazione SET DATEFORMAT della sessione non viene applicata. |
ISO 8601 |
Descrizione |
---|---|
AAAA-MM-GGThh:mm:ss [.mmm] AAAAMMGG[ hh:mm:ss[.mmm]] |
Esempi:
Per utilizzare il formato ISO 8601, è necessario specificare ogni elemento in tale formato, inclusi il carattere T, i due punti (:) e il punto (.) presenti nel formato. Le parentesi indicano che la frazione del componente dei secondi è facoltativa. Il componente dell'ora viene specificato nel formato 24 ore. T indica l'inizio della parte del valore datetime relativo all'ora. Il vantaggio dell'utilizzo del formato ISO 8601 consiste nel fatto che è uno standard internazionale con specifiche chiare. Inoltre, le impostazioni di SET DATEFORMAT o SET LANGUAGE non influiscono sul formato. |
Senza separatori |
Descrizione |
---|---|
AAAAMMGG hh:mm:ss[.mmm] |
ODBC |
Descrizione |
---|---|
{ ts '1998-05-02 01:23:56.123' } { d '1990-10-02' } { t '13:33:41' } |
L'API ODBC definisce sequenze di escape per la rappresentazione dei valori di data e ora, che in ODBC sono denominati dati timestamp. Il formato timestamp di ODBC è inoltre supportato dalla definizione del linguaggio OLE DB (DBGUID-SQL) supportata dal provider Microsoft OLE DB per SQL Server. Nelle applicazioni che utilizzano API basate su ADO, OLE DB e ODBC è possibile utilizzare il formato timestamp ODBC per la rappresentazione di valori di data e ora. Il formato delle sequenze di escape del timestamp ODBC è il seguente: { literal_type 'constant_value' }:
|
Arrotondamento della precisione in secondi frazionari dei valori datetime
I valori datetime vengono arrotondati con incrementi di 0,000, 0,003 o 0,007 secondi, come illustrato nella tabella seguente.
Valore specificato dall'utente |
Valore archiviato dal sistema |
---|---|
01/01/98 23:59:59.999 |
1998-01-02 00:00:00.000 |
01/01/98 23:59:59.995 01/01/98 23:59:59.996 01/01/98 23:59:59.997 01/01/98 23:59:59.998 |
1998-01-01 23:59:59.997 |
01/01/98 23:59:59.992 01/01/98 23:59:59.993 01/01/98 23:59:59.994 |
1998-01-01 23:59:59.993 |
01/01/98 23:59:59.990 01/01/98 23:59:59.991 |
1998-01-01 23:59:59.990 |
Conformità agli standard ANSI e ISO 8601
datetime non è conforme agli standard ANSI o ISO 8601.
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 |