Condividi tramite


smalldatetime (Transact-SQL)

si applica a:SQL Serverdatabase SQL di AzureIstanza gestita di SQL di AzureAzure Synapse AnalyticsAnalytics Platform System (PDW)database SQL in Microsoft Fabric

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

Nota

Usare ilora , data, datetime2e datetimeoffset tipi di dati per un nuovo lavoro. Questi tipi sono allineati allo standard SQL, perché sono più portabili. time, datetime2 e datetimeoffset offrono una maggiore precisione dei secondi. datetimeoffset offre il supporto del fuso orario per le applicazioni distribuite globalmente.

Descrizione di smalldatetime

Proprietà valore
sintassi smalldatetime
utilizzo DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
formati di valori letterali stringa predefiniti
(utilizzato per client legacy)
Non applicabile
intervallo di date 1900-01-01 tramite 2079-06-06

Da 1 gennaio 1900 a 6 giugno 2079
Intervallo di tempo 00:00:00 tramite 23:59:59

2024-05-09 23:59:59 arrotondamenti a 2024-05-10 00:00:00
intervalli di elementi yyyy è costituito da quattro cifre, comprese tra il 1900 e il 2079, che rappresenta un anno.

MM è costituito da due cifre, comprese tra 01 e 12, che rappresenta un mese nell'anno specificato.

dd è costituito da due cifre, comprese tra 01 e 31 a seconda del mese, che rappresenta un giorno del mese specificato.

HH è costituito da due cifre, comprese tra 00 e 23, che rappresenta l'ora.

mm è costituito da due cifre, comprese tra 00 e 59, che rappresenta il minuto.

ss è costituito da due cifre, comprese tra 00 e 59, che rappresenta il secondo. I valori minori o uguali a 29,998 secondi vengono arrotondati per difetto al minuto più vicino. I valori maggiori o uguali a 29,999 secondi vengono arrotondati per eccesso al minuto più vicino.
lunghezza carattere Massimo 19 posizioni
dimensioni di archiviazione 4 byte, fisso
accuratezza Un minuto
valore predefinito 1900-01-01 00:00:00
Calendario Gregoriano

(non include l'intervallo completo di anni)
precisione frazionaria definita dall'utente No
di conservazione e riconoscimento della differenza di fuso orario No
con riconoscimento dell'ora legale No

Conformità ANSI e ISO 8601

smalldatetime non è conforme agli standard ANSI e ISO 8601.

Convertire i dati di data e ora

Quando si esegue la conversione in tipi di dati data e ora, SQL Server rifiuta tutti i valori che non può riconoscere come date o ore. Per informazioni sull'uso delle funzioni di CAST e CONVERT con dati di data e ora, vedere CAST e CONVERT.

Convertire smalldatetime in altri tipi di data e ora

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

In caso di conversione in date, vengono copiati anno, mese e giorno. Il codice seguente mostra i risultati della conversione di un valore smalldatetime in un valore data .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Ecco il set di risultati.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

Quando la conversione viene eseguita in time(n), le ore, i minuti e i secondi vengono copiati. I secondi frazionari vengono impostati su 0. Il codice seguente mostra i risultati della conversione di un valore smalldatetime in un valore time(4) .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Ecco il set di risultati.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

Nel caso della conversione a 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 AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Ecco il set di risultati.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

Per una conversione in datetimeoffset(n), il valore smalldatetime viene copiato nel valore datetimeoffset(n). I secondi frazionari vengono impostati su 0e la differenza di fuso orario è impostata su +00:0. Il codice seguente mostra i risultati della conversione di un valore smalldatetime in un valore datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Ecco il set di risultati.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

Nel caso della conversione a datetime2(n) il valore smalldatetime viene copiato nel valore datetime2(n). I secondi frazionari vengono impostati su 0. Il codice seguente mostra i risultati della conversione di un valore smalldatetime in un valore datetime2(4) .

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Ecco il set di risultati.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Esempi

R. Eseguire il cast di valori letterali stringa con secondi a smalldatetime

Nell'esempio seguente viene confrontata la conversione di secondi in valori letterali stringa con smalldatetime.

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Input Output
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. Confrontare i 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 ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Tipo di dati Output
time 12:35:29.1234567
date 2024-05-08
smalldatetime 2024-05-08 12:35:00
datetime 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15