- 07/22/2017
- 4 minuti per leggere
-
- M
- j
- c
- M
- m
-
+4
Si applica a: SQL Server (tutte le versioni supportate) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Definisce una data che è combinata con un’ora del giorno. L’ora è basata su un giorno di 24 ore, con i secondi sempre zero (:00) e senza frazioni di secondo.
Nota
Utilizza i tipi di dati time, date, datetime2 e datetimeoffset per nuovi lavori. Questi tipi si allineano con lo standard SQL. Sono più portabili. time, datetime2 e datetimeoffset forniscono più secondi di precisione. datetimeoffset fornisce il supporto per il fuso orario per applicazioni distribuite a livello globale.
smalldatetime descrizione
Proprietà | Valore |
---|---|
Sintassi | smalldatetime |
Usage | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table1 ( Column1 smalldatetime ) |
Formati letterali di stringa predefiniti (usati per i client di livello inferiore)livello client) |
Non applicabile |
Intervallo di date | 1900-01-01 attraverso 2079-06-06 Dal 1 gennaio, 1900, fino al 6 giugno 2079 |
Time range | 00:00:00 attraverso 23:59:59 2007-05-09 23:59:59 arrotonderà a 2007-05-10 00:00:00 |
Gamme di elementi | YYYYY è quattro cifre, che vanno da 1900, a 2079, che rappresentano un anno. MM sono due cifre, che vanno da 01 a 12, che rappresentano un mese nell’anno specificato. DD sono due cifre, che vanno da 01 a 31 a seconda del mese, che rappresentano un giorno del mese specificato. hh sono due cifre, che vanno da 00 a 23, che rappresentano l’ora. mm sono due cifre, che vanno da 00 a 59, che rappresentano il minuto. ss sono due cifre, che vanno da 00 a 59, che rappresentano il secondo. I valori che sono 29,998 secondi o meno sono arrotondati per difetto al minuto più vicino. I valori di 29,999 secondi o più sono arrotondati al minuto più vicino. |
Lunghezza dei caratteri | 19 posizioni massimo |
Dimensione della memoria | 4 byte, fisso. |
Precisione | Un minuto |
Valore predefinito | 1900-01-01 00:00:00 |
Calendario | Gregoriano (Non include la gamma completa di anni.) |
Precisionedefinita dall’utente | No |
Precisione del secondo frazionario | No |
Conosce l’ora legale | No |
Conformità ANSI e ISO 8601
smalldatetime non è conforme alle norme ANSI o ISO 8601.
Conversione di dati di data e ora
Quando si converte in tipi di dati di data e ora, SQL Server rifiuta tutti i valori che non può riconoscere come date o tempi. Per informazioni sull’uso delle funzioni CAST e CONVERT con dati di data e ora, vedere CAST e CONVERT (Transact-SQL).
Conversione di smalldatetime in altri tipi di data e ora
Questa sezione descrive cosa succede quando un tipo di dati smalldatetime viene convertito in altri tipi di data e ora.
Per una conversione in data, l’anno, il mese e il giorno vengono copiati. Il codice seguente mostra 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)
Quando la conversione è in tempo(n), vengono copiati ore, minuti e secondi. Le frazioni di secondo sono impostate a 0. Il codice seguente mostra 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)
Quando la conversione è in datetime, il valore smalldatetime è copiato nel valore datetime. Le frazioni di secondo sono impostate su 0. Il seguente codice mostra 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)
Per una conversione in datetimeoffset(n), il valore smalldatetime è copiato nel valore datetimeoffset(n). Le frazioni di secondo sono impostate a 0, e l’offset del fuso orario è impostato a +00:0. Il codice seguente mostra 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)
Per la conversione in datetime2(n), il valore smalldatetime viene copiato nel valore datetime2(n). I secondi frazionari sono impostati a 0. Il seguente codice mostra 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. Casting di letterali di stringa con secondi in smalldatetime
L’esempio seguente confronta la conversione di secondi in letterali di 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. Confrontare i tipi di dati di data e ora
L’esempio seguente confronta i risultati del casting di una stringa con ogni tipo di dati di 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';