sql >> Base de Datos >  >> RDS >> Sqlserver

Convierta 'smalldatetime' a 'fecha' en SQL Server (ejemplos de T-SQL)

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 |
+---------------------+------------+