Ten artykuł zawiera przykłady konwersji smalldatetime wartość na datę wartość w SQL Server.
Jedna z korzyści konwersji smalldatetime wartość do data polega na zmniejszeniu rozmiaru pamięci z 4 bajtów do 3 bajtów. Jednak tracisz składnik czasu z wartości, więc wykonasz tę konwersję tylko wtedy, gdy nie potrzebujesz czasu.
smalldatetime typ danych zarówno datę, jak i godzinę. Jego składnik sekund jest zawsze ustawiony na zero (:00) i nie ma żadnych ułamków sekund. Jego dokładność jest do najbliższej minuty. Jego rozmiar pamięci to 4 bajty.
data z drugiej strony typ danych zawiera tylko datę. Jego dokładność jest do najbliższego dnia. Jego rozmiar pamięci to 3 bajty.
Żeby było jasne, kiedy konwertujesz smalldatetime wartość do data kopiowane są rok, miesiąc i dzień. Czas nie jest kopiowany.
Przykład 1 – Konwersja niejawna
Oto przykład niejawnej konwersji między smalldatetime i data .
DECLARE @thesmalldatetime smalldatetime, @thedate date; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedate = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedate AS 'thedate';
Wynik:
+---------------------+------------+ | smalldatetime | thedate | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+
Jest to niejawna konwersja, ponieważ nie używamy funkcji konwersji (takich jak te poniżej) do jawnej konwersji. W takim przypadku SQL Server wykonuje niejawną konwersję za kulisami, gdy próbujemy przypisać smalldatetime wartość na datę zmienna.
W tym przykładzie widzimy, że część daty smalldatetime wartość jest kopiowana do daty wartość, a czas nie jest kopiowany.
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 smalldatetime i data .
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS date) AS 'date';
Wynik:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 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 @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(date, @thesmalldatetime) AS 'date';
Wynik:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+