Tento článek obsahuje příklady převodu smalldatetime hodnotu k datu hodnotu v SQL Server.
Jedna z výhod převodu smalldatetime hodnotu k datu je, že snížíte velikost úložiště ze 4 bajtů na 3 bajty. Z hodnoty však přijdete o časovou složku, takže tento převod byste provedli pouze v případě, že čas nepotřebujete.
smalldatetime datový typ jak datum, tak čas. Jeho sekundová složka je vždy nastavena na nulu (:00) a nemá žádné zlomkové sekundy. Jeho přesnost je s přesností na minutu. Velikost jeho úložiště je 4 bajty.
Datum datový typ na druhé straně obsahuje pouze datum. Jeho přesnost je na nejbližší den. Velikost jeho úložiště je 3 bajty.
Aby bylo jasno, když převedete smalldatetime hodnotu k datu , zkopíruje se rok, měsíc a den. Čas se nezkopíruje.
Příklad 1 – Implicitní konverze
Zde je příklad implicitní konverze mezi smalldatetime a datum .
DECLARE @thesmalldatetime smalldatetime, @thedate date; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedate = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedate AS 'thedate';
Výsledek:
+---------------------+------------+ | smalldatetime | thedate | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+
Jedná se o implicitní převod, protože k jeho explicitnímu převodu nepoužíváme konverzní funkci (jako jsou ty níže). V tomto případě SQL Server provede implicitní převod za scénou, když se pokusíme přiřadit smalldatetime hodnotu k datu proměnná.
V tomto příkladu můžeme vidět, že část data smalldatetime hodnota se zkopíruje do datu hodnotu a že se čas nezkopíruje.
Příklad 2 – Explicitní konverze pomocí CAST()
Zde je příklad explicitní konverze. V tomto případě používám CAST()
funkce přímo v SELECT
k explicitnímu převodu mezi smalldatetime a datum .
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS date) AS 'date';
Výsledek:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+
Příklad 3 – Explicitní převod pomocí CONVERT()
Zde je příklad explicitní konverze pomocí CONVERT()
funkce namísto CAST()
.
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(date, @thesmalldatetime) AS 'date';
Výsledek:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+