Ten artykuł zawiera przykłady konwersji daty/godziny wartość na datę wartość w SQL Server.
Oczywista konsekwencja konwersji daty wartość do data jest to, że tracisz część czasu. Jednak jedną z korzyści jest zmniejszenie rozmiaru pamięci z 8 bajtów do 3 bajtów. Tak czy inaczej, wykonałbyś tę konwersję tylko wtedy, gdy nie potrzebujesz części czasu.
data i godzina typ danych zawiera datę i godzinę z 3-cyfrową częścią ułamkową sekund. Jego dokładność jest zaokrąglana z dokładnością do 0,000, 0,003 lub 0,007 sekundy.
Jednak data typ danych ma dokładność 1 dnia (i nie obejmuje czasu, jak wspomniano).
Przykład 1 – Konwersja niejawna
Oto przykład niejawnej konwersji między data godzina i data .
DECLARE @thedatetime datetime, @thedate date; SET @thedatetime = '2025-05-21 10:15:30.123'; SET @thedate = @thedatetime; SELECT @thedatetime AS 'datetime', @thedate AS 'date';
Wynik:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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ć datetime wartość na datę zmienna.
W tym przykładzie widzimy, że data wartość zawiera tylko datę (bez składnika czasu).
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, aby jawnie przekonwertować między data godzina i data .
DECLARE @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CAST(@thedatetime AS date) AS 'date';
Wynik:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 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 @thedatetime datetime; SET @thedatetime = '2025-05-21 10:15:30.123'; SELECT @thedatetime AS 'datetime', CONVERT(date, @thedatetime) AS 'date';
Wynik:
+-------------------------+------------+ | datetime | date | |-------------------------+------------| | 2025-05-21 10:15:30.123 | 2025-05-21 | +-------------------------+------------+