Sdílet prostřednictvím


smalldatetime (Transact-SQL)

platí pro:SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform Platform System (PDW)databáze SQL v Microsoft Fabric

Definuje datum, které se kombinuje s časem dne. Čas je založen na 24hodinovém dni, přičemž sekundy vždy nula (:00) a bez desetinných sekund.

Poznámka

Pro novou práci použijtečas , data, datetime2a datové typy datetimeoffset. Tyto typy odpovídají standardu SQL, protože jsou přenosnější. časové, datetime2 a datetimeoffset větší přesnost sekund. datetimeoffset poskytuje podporu časového pásma pro globálně nasazené aplikace.

smalldatetime description

Vlastnost Hodnota
syntaxe smalldatetime
využití DECLARE @MySmallDateTime SMALLDATETIME;

CREATE TABLE Table1 (Column1 SMALLDATETIME);
výchozí formáty řetězcového literálu
(používá se pro klienta nižší úrovně)
Nejde použít
rozsahu dat 1900-01-01 prostřednictvím 2079-06-06

1. ledna 1900 až 6. června 2079
časový rozsah 00:00:00 prostřednictvím 23:59:59

2024-05-09 23:59:59 zaokrouhlí na 2024-05-10 00:00:00
rozsahy elementů yyyy je čtyři číslice v rozsahu od 1900 do roku 2079, což představuje rok.

MM je dvě číslice v rozsahu od 01 do 12, což představuje měsíc v zadaném roce.

dd jsou dvě číslice v rozsahu od 01 do 31 v závislosti na měsíci, který představuje den zadaného měsíce.

HH je dvě číslice v rozsahu od 00 do 23, což představuje hodinu.

mm je dvě číslice v rozsahu od 00 do 59, která představuje minutu.

ss jsou dvě číslice v rozsahu od 00 do 59, které představují sekundu. Hodnoty, které jsou 29,998 sekund nebo méně, se zaokrouhlují dolů na nejbližší minutu. Hodnoty 29,999 sekund nebo více se zaokrouhlí nahoru na nejbližší minutu.
délka znaku Maximálně 19 pozic
velikost úložiště 4 bajty, pevné
přesnost Minuta
Výchozí hodnota 1900-01-01 00:00:00
kalendář Gregoriánský

(Nezahrnuje úplný rozsah let.)
přesnost desetinné sekundy definované uživatelem Ne
posun časového pásma s vědomím a zachováním Ne
s podporou letního času Ne

DODRŽOVÁNÍ PŘEDPISŮ ANSI a ISO 8601

smalldatetime není kompatibilní se standardem ANSI ani ISO 8601.

Převod dat data a času

Při převodu na datové typy data a času SQL Server odmítne všechny hodnoty, které nedokáže rozpoznat jako kalendářní data nebo časy. Informace o použití funkcí CAST a CONVERT s daty data a času naleznete v tématu CAST a CONVERT.

Převod smalldatetime na jiné typy data a času

Tato část popisuje, co se stane, když se datový typ smalldatetime převede na jiné datové typy data a času.

Pro převod na datumse zkopíruje rok, měsíc a den. Následující kód ukazuje výsledky převodu hodnoty smalldatetime na hodnotu data.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @date AS DATE = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @date AS 'date';

Tady je sada výsledků.

@smalldatetime        date
--------------------- ----------
1955-12-13 12:43:00   1955-12-13

Při převodu na čas(n), hodiny, minuty a sekundy se zkopírují. Zlomkové sekundy jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime na hodnotu time(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @time AS TIME (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @time AS 'time';

Tady je sada výsledků.

@smalldatetime          time
----------------------- -------------
1955-12-13 12:43:00     12:43:00.0000

Při převodu na data a času se hodnota smalldatetime zkopíruje do hodnoty datetime. Zlomkové sekundy jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime na hodnotu datetime.

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime AS DATETIME = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime AS 'datetime';

Tady je sada výsledků.

@smalldatetime          datetime
----------------------- -----------------------
1955-12-13 12:43:00     1955-12-13 12:43:00.000

Pro převod na datetimeoffset(n), smalldatetime hodnota se zkopíruje do datetimeoffset(n) hodnotu. Zlomkové sekundy jsou nastaveny na 0a posun časového pásma je nastaven na +00:0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime na hodnotu datetimeoffset(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetimeoffset AS DATETIMEOFFSET (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetimeoffset AS 'datetimeoffset(4)';

Tady je sada výsledků.

@smalldatetime        datetimeoffset(4)
--------------------- ------------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000 +00:0

Pro převod na datetime2(n)se hodnota smalldatetime zkopíruje do hodnoty datetime2(n). Zlomkové sekundy jsou nastaveny na 0. Následující kód ukazuje výsledky převodu hodnoty smalldatetime na hodnotu datetime2(4).

DECLARE @smalldatetime AS SMALLDATETIME = '1955-12-13 12:43:10';

DECLARE @datetime2 AS DATETIME2 (4) = @smalldatetime;

SELECT @smalldatetime AS '@smalldatetime',
       @datetime2 AS ' datetime2(4)';

Tady je sada výsledků.

@smalldatetime        datetime2(4)
--------------------- ------------------------
1955-12-13 12:43:00   1955-12-13 12:43:00.0000

Příklady

A. Přetypování řetězcových literálů s sekundami na smalldatetime

Následující příklad porovnává převod sekund v řetězcových literálech na smalldatetime.

SELECT CAST ('2024-05-08 12:35:29' AS SMALLDATETIME),
       CAST ('2024-05-08 12:35:30' AS SMALLDATETIME),
       CAST ('2024-05-08 12:59:59.998' AS SMALLDATETIME);
Vstup Výstup
2024-05-08 12:35:29 2024-05-08 12:35:00
2024-05-08 12:35:30 2024-05-08 12:36:00
2024-05-08 12:59:59.998 2024-05-08 13:00:00

B. Porovnání datových typů data a času

Následující příklad porovnává výsledky přetypování řetězce k jednotlivým datovým typům data a času.

SELECT CAST ('2024-05-08 12:35:29.1234567 +12:15' AS TIME (7)) AS 'time',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATE) AS 'date',
       CAST ('2024-05-08 12:35:29.123' AS SMALLDATETIME) AS 'smalldatetime',
       CAST ('2024-05-08 12:35:29.123' AS DATETIME) AS 'datetime',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIME2 (7)) AS 'datetime2',
       CAST ('2024-05-08 12:35:29.1234567 +12:15' AS DATETIMEOFFSET (7)) AS 'datetimeoffset';
Datový typ Výstup
čas 12:35:29.1234567
datum 2024-05-08
smalldatetime 2024-05-08 12:35:00
data a času 2024-05-08 12:35:29.123
datetime2 2024-05-08 12:35:29.1234567
datetimeoffset 2024-05-08 12:35:29.1234567 +12:15
  • CAST a CONVERT (Transact-SQL)