Este artículo contiene ejemplos de cómo convertir un smalldatetime valor a una fecha valor en SQL Server.
Uno de los beneficios de convertir un smalldatetime valor hasta la fecha es que reduce el tamaño de almacenamiento de 4 bytes a 3 bytes. Sin embargo, pierde el componente de tiempo del valor, por lo que solo haría esta conversión si no necesita el tiempo.
La pequeña fecha y hora tipo de datos tanto la fecha como la hora. Su componente de segundos siempre se establece en cero (:00) y no tiene segundos fraccionarios. Su precisión es al minuto más cercano. Su tamaño de almacenamiento es de 4 bytes.
La fecha tipo de datos por otro lado, solo incluye la fecha. Su precisión es al día más cercano. Su tamaño de almacenamiento es de 3 bytes.
Entonces, para ser claros, cuando conviertes un smalldatetime valor hasta la fecha , se copian el año, el mes y el día. La hora no se copia.
Ejemplo 1:conversión implícita
Este es un ejemplo de una conversión implícita entre smalldatetime y fecha .
DECLARE @thesmalldatetime smalldatetime, @thedate date; SET @thesmalldatetime = '2025-05-21 10:15:30'; SET @thedate = @thesmalldatetime; SELECT @thesmalldatetime AS 'smalldatetime', @thedate AS 'thedate';
Resultado:
+---------------------+------------+ | smalldatetime | thedate | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+
Esta es una conversión implícita porque no estamos usando una función de conversión (como las que se muestran a continuación) para convertirla explícitamente. En este caso, SQL Server realiza una conversión implícita en segundo plano cuando intentamos asignar el smalldatetime valor a una fecha variables.
En este ejemplo, podemos ver que la parte de la fecha de smalldatetime el valor se copia a la fecha valor, y que la hora no se copia.
Ejemplo 2:conversión explícita mediante CAST()
Este es un ejemplo de una conversión explícita. En este caso, uso el CAST()
función directamente dentro del SELECT
declaración para convertir explícitamente entre smalldatetime y fecha .
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CAST(@thesmalldatetime AS date) AS 'date';
Resultado:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+
Ejemplo 3:conversión explícita mediante CONVERT()
Aquí hay un ejemplo de una conversión explícita usando CONVERT()
función en lugar de CAST()
.
DECLARE @thesmalldatetime smalldatetime; SET @thesmalldatetime = '2025-05-21 10:15:30'; SELECT @thesmalldatetime AS 'thesmalldatetime', CONVERT(date, @thesmalldatetime) AS 'date';
Resultado:
+---------------------+------------+ | thesmalldatetime | date | |---------------------+------------| | 2025-05-21 10:16:00 | 2025-05-21 | +---------------------+------------+