Share via


smalldatetime (Transact-SQL)

Definisce una data combinata con un'ora del giorno. L'ora si basa su un formato di 24 ore, con secondi sempre a zero (: 00) e senza secondi frazionari.

[!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à. time, datetime2 e datetimeoffset offrono una maggiore precisione dei secondi, mentre datetimeoffset offre il supporto del fuso orario per le applicazioni distribuite globalmente.

Descrizione di smalldatetime

Sintassi

smalldatetime

Utilizzo

DECLARE @MySmalldatetime smalldatetime

CREATE TABLE Table1 ( Column1 smalldatetime )

Formati predefiniti dei valori letterali stringa

(utilizzati per client legacy)

Non applicabile

Intervallo di date

Da 1900-01-01 a 2079-06-06

Da 1 gennaio 1900 a 6 giugno 2079

Intervallo di ore

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

2007-05-09 23:59:59 verrà arrotondato a

2007-05-10 00:00:00

Intervalli di elementi

AAAA rappresenta un numero di quattro cifre, compreso tra 1900 e 2079, 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. I valori minori o uguali a 29,998 secondi vengono arrotondati al minuto per difetto. I valori maggiori o uguali a 29,999 secondi vengono arrotondati al minuto per eccesso.

Lunghezza in caratteri

Massimo 19 posizioni

Dimensioni dello spazio di archiviazione

4 byte, fissa.

Accuratezza

Un minuto

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

Conformità agli standard ANSI e ISO 8601

smalldatetime non è conforme agli standard ANSI o ISO 8601.

Conversione dei dati relativi alla data e all'ora

Nella conversione di tipi di dati relativi alla data e all'ora, in SQL Server vengono rifiutati tutti i valori non riconosciuti come date o orari. Per informazioni sull'utilizzo delle funzioni CAST e CONVERT con i dati relativi a data e ora, vedere CAST e CONVERT (Transact-SQL)

Conversione del tipo di dati smalldatetime in altri tipi di dati relativi a data e ora

Nella tabella seguente viene descritto il risultato della conversione di un tipo di dati smalldatetime in altri tipi di dati relativi a data e ora.

Tipo di dati in cui viene eseguita la conversione

Dettagli relativi alla conversione

date

Il giorno, il mese e l'anno vengono copiati.

Nel codice seguente vengono illustrati i risultati della conversione di un valore smalldatetime in un valore date.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @date date = @smalldatetime
SELECT @smalldatetime AS '@smalldatetime', @date AS 'date';
--Result
--@smalldatetime          date
------------------------- ----------
--1955-12-13 12:43:00     1955-12-13
--
--(1 row(s) affected)

time(n)

Le ora, i minuti e i secondi vengono copiati, mentre i secondi frazionari vengono impostati su 0.

Nel codice seguente vengono illustrati i risultati della conversione di un valore smalldatetime in un valore time(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @time time(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @time AS 'time';
--Result
--@smalldatetime          time
------------------------- -------------
--1955-12-13 12:43:00     12:43:00.0000
--
--(1 row(s) affected)

datetime

Il valore smalldatetime viene copiato nel valore datetime, I secondi frazionari vengono impostati su 0.

Nel codice seguente vengono illustrati i risultati della conversione di un valore smalldatetime in un valore datetime.

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime datetime = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime AS 'datetime';
--Result
--@smalldatetime          datetime
------------------------- -----------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.000
--
--(1 row(s) affected)

datetimeoffset(n)

Il valore smalldatetime viene copiato nel valore datetimeoffset(n). I secondi frazionari vengono impostati su 0, mentre la differenza di fuso orario viene impostata su +00:0.

Nel codice seguente vengono illustrati i risultati della conversione di un valore smalldatetime in un valore datetimeoffset(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetimeoffset datetimeoffset(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetimeoffset AS 'datetimeoffset(4)';
--Result
--@smalldatetime          datetimeoffset(4)
------------------------- ------------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000 +00:0
--
--(1 row(s) affected)

datetime2(n)

Il valore smalldatetime viene copiato nel valore datetime2(n). I secondi frazionari sono impostati su 0.

Nel codice seguente vengono illustrati i risultati della conversione di un valore smalldatetime in un valore datetime2(4).

DECLARE @smalldatetime smalldatetime = '1955-12-13 12:43:10';
DECLARE @datetime2 datetime2(4) = @smalldatetime;
SELECT @smalldatetime AS '@smalldatetime', @datetime2 AS ' datetime2(4)';
--Result
--@smalldatetime           datetime2(4)
------------------------- ------------------------
--1955-12-13 12:43:00     1955-12-13 12:43:00.0000
--
--(1 row(s) affected)

Esempi

A.Cast di valori letterali stringa con secondi a smalldatetime

Nell'esempio seguente viene confrontata la conversione dei secondi nei valori letterali stringa in smalldatetime.

SELECT 
     CAST('2007-05-08 12:35:29'     AS smalldatetime)
    ,CAST('2007-05-08 12:35:30'     AS smalldatetime)
    ,CAST('2007-05-08 12:59:59.998' AS smalldatetime);

Input

Output

2007-05-08 12:35:29

2007-05-08 12:35:00

2007-05-08 12:35:30

2007-05-08 12:36:00

2007-05-08 12:59:59.998

2007-05-08 13:00:00

B.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 relativi a data e ora.

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

Vedere anche

Riferimento

CAST e CONVERT (Transact-SQL)