Tento článek obsahuje příklady převodu datetime hodnotu k datu hodnotu v SQL Server.
Zřejmý důsledek převodu data a času hodnotu k datu je, že ztratíte část času. Jednou z výhod však je, že snížíte velikost úložiště z 8 bajtů na 3 bajty. V každém případě byste tuto konverzi provedli pouze v případě, že nepotřebujete časovou část.
datum a čas datový typ zahrnuje datum a čas s 3místnou částí ve zlomcích sekund. Jeho přesnost je zaokrouhlena na 0,000, 003 nebo 007 sekund.
Nicméně datum datový typ má přesnost 1 den (a nezahrnuje čas, jak bylo zmíněno).
Příklad 1 – Implicitní konverze
Zde je příklad implicitní konverze mezi datetime a datum .
DECLARE @thedatetime datetime, @thedate date; SET @thedatetime = '2025-05-21 10:15:30.123'; SET @thedate = @thedatetime; SELECT @thedatetime AS 'datetime', @thedate AS 'date';
Výsledek:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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 datetime hodnotu k datu proměnná.
V tomto příkladu vidíme, že datum hodnota obsahuje pouze datum (bez časové složky).
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 datetime a datum .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS date) AS 'date';
Výsledek:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+
Příklad 3 – Explicitní převod pomocí CONVERT()
Zde je příklad explicitní konverze pomocí CONVERT()
funkce namísto CAST()
.
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CONVERT(date, @thedatetime) AS 'date';
Výsledek:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+