smalldatetime (Transact-SQL)

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

.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.