Ten artykuł zawiera przykłady konwersji data/godzina2 wartość na datę wartość w SQL Server.
Po przekonwertowaniu data/godzina2 wartość na datę typ danych, tracisz część czasu. Jednak zmniejszasz również rozmiar pamięci z 7 do 9 bajtów do 3 bajtów. W każdym razie wykonałbyś tę konwersję tylko wtedy, gdy nie potrzebujesz części czasu.
data/godzina2 typ danych zawiera datę i godzinę z częścią ułamkową sekund od 0 do 7 (zależy to od tego, ile sekund ułamkowych jest do niego przypisanych). Jego dokładność wynosi 100 nanosekund.
data z drugiej strony typ danych nie obejmuje czasu i ma dokładność 1 dnia.
Przykład 1 – Konwersja niejawna
Oto przykład niejawnej konwersji między datetime2 i data .
DECLARE @thedatetime2 datetime2, @thedate date; SET @thedatetime2 = '2025-05-21 10:15:30.1234567'; SET @thedate = @thedatetime2; SELECT @thedatetime2 AS 'datetime2', @thedate AS 'date';
Wynik:
+-----------------------------+------------+ | datetime2 | date | |-----------------------------+------------| | 2025-05-21 10:15:30.1234567 | 2025-05-21 | +-----------------------------+------------+
Jest to niejawna konwersja, ponieważ nie używamy funkcji konwersji (takich jak te poniżej) do jawnej konwersji. W tym przypadku SQL Server wykonuje niejawną konwersję za kulisami, gdy próbujemy przypisać datetime2 wartość na datę zmienna.
Tutaj widzimy, że data wartość zawiera tylko datę (bez składnika czasu).
W tym przykładzie datetime2 value używa domyślnej precyzji (co daje 7 miejsc po przecinku). Można to zredukować do dowolnej liczby, a wynik konwersji byłby taki sam.
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';
Wynik:
+---------------------+------------+ | datetime2 | date | |---------------------+------------| | 2025-05-21 10:15:30 | 2025-05-21 | +---------------------+------------+
Przykład 2 – Jawna konwersja za pomocą CAST()
Oto przykład jawnej konwersji. W tym przypadku używam CAST()
działać bezpośrednio w SELECT
oświadczenie o jawnej konwersji między datetime2 i data .
DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CAST(@thedatetime2 AS date) AS 'date';
Wynik:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+
Przykład 3 – Jawna konwersja przy użyciu funkcji CONVERT()
Oto przykład jawnej konwersji przy użyciu CONVERT()
funkcja zamiast CAST()
.
DECLARE @thedatetime2 datetime2(4); SET @thedatetime2 = '2025-05-21 10:15:30.1234'; SELECT @thedatetime2 AS 'datetime2', CONVERT(date, @thedatetime2) AS 'date';
Wynik:
+--------------------------+------------+ | datetime2 | date | |--------------------------+------------| | 2025-05-21 10:15:30.1234 | 2025-05-21 | +--------------------------+------------+