time (Transact-SQL)
Definisce l'ora di un giorno. L'ora non prende in considerazione il fuso orario e si basa su un formato di 24 ore.
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 time
Proprietà |
Valore |
---|---|
Sintassi |
time [ (fractional second precision) ] |
Utilizzo |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
fractional seconds precision |
Specifica il numero di cifre per la parte frazionaria dei secondi. Può essere un numero intero compreso tra 0 e 7. La precisione frazionaria predefinita è 7 (100 ns). |
Utilizzo |
DECLARE @MyTime time(7) CREATE TABLE Table1 ( Column1 time(7) ) |
Formato predefinito dei valori letterali stringa (utilizzati per client legacy) |
hh:mm:ss[.nnnnnnn] 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 |
da 00:00:00.0000000 a 23:59:59.9999999 |
Intervalli di elementi |
hh rappresenta un numero di due cifre tra 0 e 23 indicante l'ora. mm rappresenta un numero di due cifre tra 0 e 59 indicante i minuti. ss rappresenta un numero di due cifre tra 0 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. |
Lunghezza in caratteri |
da 8 posizioni minimo (hh:mm:ss) a 16 massimo (hh:mm:ss.nnnnnnn) |
Precisione, scala (l'utente specifica solo la scala) |
Scala specificataRisultato (precisione, scala)Lunghezza della colonna (byte)Precisione secondi frazionari
time (16,7)57
time(0) (8,0)30-2
time(1) (10,1)30-2
time(2) (11,2)30-2
time(3) (12,3)43-4
time(4) (13,4)43-4
time(5) (14,5)55-7
time(6) (15,6)55-7
time(7) (16,7)55-7
|
Dimensioni dello spazio di archiviazione |
5 byte, fisso è l'impostazione predefinita con la precisione in secondi frazionari predefinita pari a 100 ns. |
Accuratezza |
100 nanosecondi |
Valore predefinito |
00:00:00 Questo valore viene utilizzato per la parte relativa al tempo aggiunta per la conversione implicita da date a datetime2 o datetimeoffset. |
Precisione in secondi frazionari definita dall'utente |
Sì |
Considerazione e conservazione delle differenze di fuso orario |
No |
Considerazione dell'ora legale |
No |
Formati di valore letterale stringa supportati per l'ora
Nella tabella seguente sono mostrati i formati di valore letterale stringa validi per il tipo di dati time.
SQL Server |
Descrizione |
---|---|
hh:mm [: ss][:secondi frazionari][AM][PM] hh:mm [: ss].secondi frazionari][AM][PM] hhAM[PM] hh AM [PM] |
Il valore relativo all'ora 0 rappresenta l'ora dopo mezzanotte (AM), indipendentemente dall'indicazione AM. Non è possibile specificare PM quando l'ora è uguale a 0. I valori di ora compresi tra 01 e 11 rappresentano le ore antimeridiane (prima di mezzogiorno) se non si specifica né AM né PM. Se si specifica AM, i valori indicano le ore prima di mezzogiorno, mentre rappresentano le ore postmeridiane (dopo mezzogiorno) se si specifica PM. Il valore di ora 12 rappresenta l'ora che inizia a mezzogiorno se non si specifica né AM né PM. Rappresenta invece l'ora che inizia a mezzanotte se si specifica AM e l'ora che inizia a mezzogiorno se si specifica PM. Ad esempio, 12:01 indica un minuto dopo mezzogiorno, così come 12:01 PM, mentre 12:01 AM indica un minuto dopo la mezzanotte. 12:01 AM equivale a 00:01 o 00:01 AM. I valori di ora compresi tra 13 e 23 rappresentano le ore postmeridiane se non si specifica né AM né PM e le ore postmeridiane se si specifica PM. Non è possibile specificare AM per valori di ora compresi tra 13 e 23. Un valore relativo all'ora 24 non è valido. Per indicare la mezzanotte, utilizzare 12:00 AM o 00:00. È possibile far precedere i millisecondi dai due punti (:) o da un punto (.). Se si utilizzano i due punti, il valore indica i millesimi di secondo. Un valore preceduto da un punto indica i decimi di secondo se è composto da una sola cifra, i centesimi di secondo se è composto da due cifre e i millesimi di secondo se è composto da tre cifre. Ad esempio, 12:30:20:1 indica che sono trascorsi 20 secondi e un millesimo di secondo dalle 12:30, mentre 12:30:20.1 indica che sono trascorsi venti secondi e un decimo di secondo dalle 12:30. |
ISO 8601 |
Note |
---|---|
hh:mm:ss hh:mm[:ss][.secondi frazionari] |
|
ODBC |
Note |
---|---|
{t 'hh:mm:ss[.secondi frazionari]'} |
Specifico delle API ODBC Funzioni in SQL Server 2008 uguali a SQL Server 2005. |
Conformità di time agli standard ANSI e ISO 8601
L'utilizzo dell'ora 24 per indicare la mezzanotte e del secondo del salto a 59 come definito dall'ISO 8601(5.3.2 e 5.3) non è supportato per essere compatibile con i tipi di data ed ora esistenti. Non sono definiti dallo standard SQL 2003.
Il formato predefinito dei valori letterali stringa utilizzato per i client legacy risulterà compatibile con il formato standard SQL, definito come hh:mm:ss[.nnnnnnn]. Questo formato assomiglia alla definizione ISO 8601 per TIME che esclude i secondi frazionari.
Esempi
A. Confronto dei tipi di dati di data e ora
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';
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 |
B. Inserimento dei valori letterali stringa dell'ora validi in una colonna time (7)
Nella tabella seguente sono elencati i diversi valori letterali stringa che possono essere inseriti in una colonna del tipo di dati time(7) con i valori che sono archiviati in tale colonna.
Tipo di formato dei valori letterali stringa |
Valore letterale stringa inserito |
Valore time(7) archiviato |
Descrizione |
---|---|---|---|
SQL Server |
01:01:01:123AM |
01:01:01.1230000 |
Se prima della precisione frazionaria dei secondi vengono utilizzati i due punti (:), la scala non può superare tre posizioni o verrà generato un errore. |
SQL Server |
'01:01:01.1234567 AM' |
01:01:01.1234567 |
Quando si specificano AM o PM, l'ora viene archiviata in formato di 24 ore senza l'AM o il PM letterale. |
SQL Server |
'01:01:01.1234567 PM' |
13:01:01.1234567 |
Quando si specificano AM o PM, l'ora viene archiviata in formato di 24 ore senza l'AM o il PM letterale. |
SQL Server |
'01:01:01.1234567PM' |
13:01:01.1234567 |
Lo spazio prima dell'indicazione AM o PM è facoltativo. |
SQL Server |
'01AM' |
01:00:00.0000000 |
Quando viene specificata solo l'ora, tutti gli altri valori sono uguali a 0. |
SQL Server |
'01 AM' |
01:00:00.0000000 |
Lo spazio prima dell'indicazione AM o PM è facoltativo. |
SQL Server |
'01:01:01' |
01:01:01.0000000 |
Quando la precisione frazionaria dei secondi non è specificata, ogni posizione definita dal tipo di dati è 0. |
ISO 8601 |
'01:01:01.1234567' |
01:01:01.1234567 |
Per essere conforme allo standard ISO 8601, utilizzare il formato delle 24 ore, non AM o PM. |
ISO 8601 |
'01:01:01.1234567 +01:01' |
01:01:01.1234567 |
La differenza del fuso orario facoltativa (TZD) è consentita nell'input ma non viene archiviata. |
C. Inserimento del valore letterale stringa nelle colonne di ogni data ed ora e Tipo di data
Nella tabella seguente la prima colonna indica il valore letterale stringa dell'ora da inserire nella colonna della tabella del database della data o dell'ora visualizzate nella seconda colonna. La terza colonna indica il valore che verrà memorizzato nella colonna della tabella del database.
Valore letterale stringa inserito |
Tipo di dati colonna |
Valore archiviato nella colonna |
Descrizione |
---|---|---|---|
'12:12:12.1234567' |
time(7) |
12:12:12.1234567 |
Se la precisione frazionaria dei secondi supera il valore specificato per la colonna, la stringa sarà troncata senza errori. |
'2007-05-07' |
date |
NULL |
Qualsiasi valore dell'ora genererà un errore nell'istruzione INSERT |
'12:12:12' |
smalldatetime |
1900-01-01 12:12:00 |
Qualsiasi valore della precisione frazionaria dei secondi genererà un errore nell'istruzione INSERT. |
'12:12:12.123' |
datetime |
1900-01-01 12:12:12.123 |
Qualsiasi precisione dei secondi maggiore di tre posizioni genera un errore nell'espressione INSERT. |
'12:12:12.1234567' |
datetime2(7) |
1900-01-01 12:12:12.1234567 |
Se la precisione frazionaria dei secondi supera il valore specificato per la colonna, la stringa sarà troncata senza errori. |
'12:12:12.1234567' |
datetimeoffset(7) |
1900-01-01 12:12:12.1234567 +00:00 |
Se la precisione frazionaria dei secondi supera il valore specificato per la colonna, la stringa sarà troncata senza errori. |
Vedere anche