- 07/22/2017
- 4 minute de citit
-
- M
- j
- c
- M
- m
-
+4
.
Se aplică la: SQL Server (toate versiunile acceptate) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Define o dată care este combinată cu o oră a zilei. Ora se bazează pe o zi de 24 de ore, cu secundele întotdeauna zero (:00) și fără fracțiuni de secundă.
Nota
Utilizați tipurile de date time, date, datetime2 și datetimeoffset pentru lucrări noi. Aceste tipuri se aliniază la standardul SQL. Ele sunt mai portabile. time, datetime2 și datetimeoffset oferă mai multe secunde de precizie. datetimeoffset oferă suport pentru fusul orar pentru aplicațiile implementate la nivel global.
smalldatetime description
Property | Value |
---|---|
Syntax | smalldatetime |
Utilizare | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table1 ( Column1 smalldatetime ) |
Formatul literal de șiruri de caractere implicit (utilizat pentru down-.level client) |
Nu se aplică |
Date range | 1900-01-01 până la 2079-06-06 January 1, 1900 până la 6 iunie 2079 |
Intervalul de timp | 00:00:00 până la 23:59:59 2007-05-09 23:59:59 se va rotunji la 2007-05-10 00:00:00 |
Elementul intervale | YYYY este format din patru cifre, de la 1900, până la 2079, care reprezintă un an. MM este format din două cifre, cuprinse între 01 și 12, care reprezintă o lună din anul specificat. DD este format din două cifre, cuprinse între 01 și 31, în funcție de lună, care reprezintă o zi a lunii specificate. hh este format din două cifre, cuprinse între 00 și 23, care reprezintă ora. mm este format din două cifre, cuprinse între 00 și 59, care reprezintă minutul. ss este format din două cifre, cuprinse între 00 și 59, care reprezintă secunda. Valorile care sunt mai mici sau egale cu 29,998 secunde sunt rotunjite în jos la cel mai apropiat minut. Valorile care sunt de 29,999 secunde sau mai mult sunt rotunjite în sus până la cel mai apropiat minut. |
Lungimea caracterelor | 19 poziții maxim |
Dimensiunea de stocare | 4 octeți, fixă. |
Precizie | Un minut |
Valoare implicită | 1900-01-01 00:00:00 |
Calendar | Gregorian (Nu include intervalul complet de ani.) |
User-precizie fracționară de secundă definită de utilizator | Nu |
Cunoașterea și păstrarea decalajului de fus orar | Nu |
Conștient de ora de vară | Nu |
Conformitate ANSI și ISO 8601
smalldatetime nu este conform ANSI sau ISO 8601.
Conversia datelor de dată și oră
Când convertiți în tipuri de date de dată și oră, SQL Server respinge toate valorile pe care nu le poate recunoaște ca date sau ore. Pentru informații despre utilizarea funcțiilor CAST și CONVERT cu date de dată și oră, consultați CAST și CONVERT (Transact-SQL).
Conversia smalldatetime în alte tipuri de date și ore
Această secțiune descrie ce se întâmplă atunci când un tip de date smalldatetime este convertit în alte tipuri de date de dată și oră.
Pentru o conversie în dată, anul, luna și ziua sunt copiate. Următorul cod prezintă rezultatele conversiei unei valori smalldatetime
într-o valoare 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)
Când conversia este în timp(n), se copiază orele, minutele și secundele. Secundele fracționare sunt setate la 0. Următorul cod arată rezultatele conversiei unei valori smalldatetime
într-o valoare 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)
Când conversia este în datetime, valoarea smalldatetime este copiată în valoarea datetime. Secundele fracționare sunt setate la 0. Următorul cod arată rezultatele conversiei unei valori smalldatetime
într-o valoare 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)
Pentru o conversie în datetimeoffset(n), valoarea smalldatetime este copiată în valoarea datetimeoffset(n). Secundele fracționare sunt setate la 0, iar decalajul fusului orar este setat la +00:0. Următorul cod prezintă rezultatele conversiei unei valori smalldatetime
într-o valoare 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)
Pentru conversia în datetime2(n), valoarea smalldatetime este copiată în valoarea datetime2(n). Secundele fracționare sunt setate la 0. Următorul cod arată rezultatele conversiei unei valori smalldatetime
într-o valoare 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)
Exemple
A. Casting string literals with seconds to smalldatetime
Exemplul următor compară conversia secundei din string literals în 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. Compararea tipurilor de date de dată și oră
Exemplul următor compară rezultatele turnării unui șir de caractere în fiecare tip de date de dată și oră.
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';
.