smalldatetime (Transact-SQL)

  • 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'; 

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.