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

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]

  • hh è un numero di due cifre, compreso tra 0 e 14, che rappresenta il numero di ore della differenza di fuso orario.

  • mm è un numero di due cifre, tra 0 e 59, che rappresenta il numero di minuti aggiuntivi della differenza di fuso orario.

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.