smalldatetime (Transact-SQL)
si applica a:SQL Server
database SQL di Azure
Istanza gestita di SQL di Azure
Azure Synapse Analytics
Analytics 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 il
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
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
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
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 0
e 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
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 |