Тази статия съдържа примери за преобразуване на smalldatetime стойност до дата стойност в SQL Server.
Едно от предимствата на преобразуването на smalldatetime стойност до дата е, че намалявате размера на съхранение от 4 байта на 3 байта. Въпреки това губите времевия компонент от стойността, така че бихте направили това преобразуване само ако нямате нужда от време.
Smalldatetime тип данни както датата, така и часа. Неговият компонент за секунди винаги е настроен на нула (:00) и няма никакви дробни секунди. Неговата точност е до най-близката минута. Размерът му за съхранение е 4 байта.
Датата тип данни от друга страна, включва само датата. Неговата точност е до най-близкия ден. Размерът му за съхранение е 3 байта.
Така че, за да е ясно, когато конвертирате smalldatetime стойност до дата , годината, месецът и денят се копират. Часът не се копира.
Пример 1 – Неявно преобразуване
Ето пример за имплицитно преобразуване между smalldatetime и дата .
DECLARE @thesmalldatetime smalldatetime, @thedate date;SET @thesmalldatetime ='2025-05-21 10:15:30';SET @thedate =@thesmalldatetime;ИЗБЕРЕТЕ @thesmalldatetime AS 'smalldatetime', @theda;
Резултат:
+---------------------+-----------+| smalldatetime | датата ||---------------------+-----------|| 21.05.2025 10:16:00 | 2025-05-21 |+---------------------+-----------+
Това е имплицитно преобразуване, защото не използваме функция за преобразуване (като тези по-долу), за да я преобразуваме изрично. В този случай SQL Server изпълнява неявно преобразуване зад кулисите, когато се опитваме да присвоим smalldatetime стойност до дата променлива.
В този пример можем да видим, че частта от датата на smalldatetime стойността се копира на дата стойност и че времето не се копира.
Пример 2 – Изрично преобразуване с помощта на CAST()
Ето пример за изрично преобразуване. В този случай използвам CAST()
функция директно в SELECT
изявление за изрично преобразуване между smalldatetime и дата .
DECLARE @thesmalldatetime smalldatetime;SET @thesmalldatetime ='2025-05-21 10:15:30';ИЗБЕРЕТЕ @thesmalldatetime КАТО 'thesmalldatetime', CAST(@thesmalldatetime КАТО дата) AS> 'дата';Резултат:
+---------------------+-----------+| thesmalldatetime | дата ||---------------------+-----------|| 21.05.2025 10:16:00 | 2025-05-21 |+---------------------+-----------+Пример 3 – Изрично преобразуване с помощта на CONVERT()
Ето пример за изрично преобразуване с помощта на
CONVERT()
функция вместоCAST()
.DECLARE @thesmalldatetime smalldatetime;SET @thesmalldatetime ='2025-05-21 10:15:30';SELECT @thesmalldatetime КАТО 'thesmalldatetime', CONVERT(date, @thesmalldatetime) КАТО 'date';>Резултат:
+---------------------+-----------+| thesmalldatetime | дата ||---------------------+-----------|| 21.05.2025 10:16:00 | 2025-05-21 |+---------------------+-----------+