Tento článek obsahuje příklady převodu datetime2 hodnotu k datu hodnotu v SQL Server.
Když převedete datetime2 hodnotu k datu datový typ, ztratíte časovou část. Můžete však také snížit velikost úložiště ze 7 až 9 bajtů na 3 bajty. V každém případě byste tento převod provedli pouze v případě, že nepotřebujete časovou část.
datetime2 datový typ zahrnuje datum a čas se zlomkovými sekundami mezi 0 a 7 (to závisí na tom, kolik zlomkových sekund je mu přiřazeno). Jeho přesnost je 100 nanosekund.
Datum datový typ na druhé straně nezahrnuje čas a má přesnost 1 dne.
Příklad 1 – Implicitní konverze
Zde je příklad implicitní konverze mezi datetime2 a datum .
DECLARE @thedatetime2 datetime2, @thedate date; SET @thedatetime2 = '2025-05-21 10:15:30.1234567'; SET @thedate = @thedatetime2; SELECT @thedatetime2 AS 'datetime2', @thedate AS 'date';
Výsledek:
+-----------------------------+------------+ | datetime2 | date | |-----------------------------+------------| | 2025-05-21 10:15:30.1234567 | 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 datetime2 hodnotu k datu proměnná.
Zde vidíme, že datum hodnota obsahuje pouze datum (bez časové složky).
V tomto příkladu datetime2 hodnota používá výchozí přesnost (což má za následek 7 desetinných míst). To by se dalo snížit na libovolné číslo a výsledek převodu by byl stejný.
DECLARE @thedatetime2 datetime2(0), @thedate date; SET @thedatetime2 = '2025-05-21 10:15:30.1234567'; SET @thedate = @thedatetime2; SELECT @thedatetime2 AS 'datetime2', @thedate AS 'date';
Výsledek:
+---------------------+------------+ | datetime2 | date | |---------------------+------------| | 2025-05-21 10:15:30 | 2025-05-21 | +---------------------+------------+
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 datetime2 a datum .
DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CAST(@thedatetime2 AS date) AS 'date';
Výsledek:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+
Příklad 3 – Explicitní převod pomocí CONVERT()
Zde je příklad explicitní konverze pomocí CONVERT()
funkce namísto CAST()
.
DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CONVERT(date, @thedatetime2) AS 'date';
Výsledek:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+