- 22.7.2017
- 4 minuty čtení
-
- M
- j
- c
- M
- m
-
+4
Týká se: SQL Server (všechny podporované verze) Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Parallel Data Warehouse
Definuje datum, které je kombinováno s denním časem. Čas je založen na 24hodinovém dni, přičemž sekundy jsou vždy nulové (:00) a bez zlomků sekund.
Poznámka
Pro novou práci použijte datové typy time, date, datetime2 a datetimeoffset. Tyto typy jsou v souladu se standardem SQL. Jsou přenositelnější. time, datetime2 a datetimeoffset poskytují větší přesnost na sekundy. datetimeoffset poskytuje podporu časových pásem pro globálně nasazené aplikace.
smalldatetime description
Property | Value |
---|---|
Syntaxe | smalldatetime |
Použití | DECLARE @MySmalldatetime smalldatetime CREATE TABLE Table1 ( Column1 smalldatetime ) |
Výchozí řetězcové literální formáty (používá se pro down-úroveň klienta) |
Není použitelné |
Rozsah dat | 1900-01-01 až 2079-06-06 1. ledna, 1900 až 6. června 2079 |
Časový rozsah | 00:00:00 až 23:59:59 2007-05-09 23:59:59 se zaokrouhlí na 2007-05-10 00:00:00 |
Rozsah prvků | RRRR jsou čtyři číslice od 1900 do 2079, které představují rok. MM jsou dvě číslice v rozsahu od 01 do 12, které představují měsíc v daném roce. DD jsou dvě číslice v rozsahu od 01 do 31 v závislosti na měsíci, které představují den v daném měsíci. hh jsou dvě číslice v rozsahu od 00 do 23, které představují hodinu. mm jsou dvě číslice v rozsahu od 00 do 59, které představují minutu. ss jsou dvě číslice v rozsahu od 00 do 59, které představují sekundu. Hodnoty, které jsou 29,998 sekundy nebo kratší, se zaokrouhlují dolů na nejbližší minutu. Hodnoty 29,999 sekundy nebo více se zaokrouhlují nahoru na nejbližší minutu. |
Délka znaku | Maximálně 19 pozic |
Velikost úložiště | 4 bajty, pevná. |
Přesnost | Jedna minuta |
Výchozí hodnota | 1900-01-01 00:00:00 |
Kalendář | Gregoriánský (Nezahrnuje celý rozsah let.) |
Uživatel-definovaná přesnost na zlomky sekundy | Ne |
Znalost a zachování posunu časových pásem | Ne |
Daylight saving aware | No |
Soulad s ANSI a ISO 8601
smalldatetime není v souladu s ANSI ani ISO 8601.
Převod dat a časů
Při převodu na datové typy datum a čas SQL Server odmítá všechny hodnoty, které nemůže rozpoznat jako datum nebo čas. Informace o použití funkcí CAST a CONVERT s daty data a času najdete v části CAST a CONVERT (Transact-SQL).
Převod smalldatetime na jiné datové a časové typy
Tato část popisuje, co se děje při převodu datového typu smalldatetime na jiné datové typy data a času.
Při převodu na datum se zkopíruje rok, měsíc a den. Následující kód ukazuje výsledky převodu hodnoty smalldatetime
na hodnotu 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)
Při převodu na time(n) se kopírují hodiny, minuty a sekundy. Zlomky sekund jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime
na hodnotu 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)
Pokud je převod na datetime, je hodnota smalldatetime zkopírována na hodnotu datetime. Zlomky sekund jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime
na hodnotu 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)
Při převodu na datetimeoffset(n) se hodnota smalldatetime zkopíruje na hodnotu datetimeoffset(n). Zlomky sekund jsou nastaveny na 0 a posun časové zóny je nastaven na +00:0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime
na hodnotu 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)
Při převodu na datetime2(n) se hodnota smalldatetime zkopíruje na hodnotu datetime2(n). Zlomky sekund jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime
na hodnotu 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)
Příklady
A. Převod řetězcových literálů se sekundami na smalldatetime
Následující příklad porovnává převod sekund v řetězcových literálech na 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);
Vstup | Výstup | |
---|---|---|
2007-05-08 12:35:29 | 2007-05-08 12. září | :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. Porovnání datových typů data a času
Následující příklad porovnává výsledky přiřazení řetězce k jednotlivým datovým typům data a času.
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';
.