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

Convierta 'fecha y hora' en 'fecha' en SQL Server (ejemplos de T-SQL)

Este artículo contiene ejemplos de cómo convertir una fecha y hora valor a una fecha valor en SQL Server.

La consecuencia obvia de convertir un datetime valor hasta la fecha es que pierdes la porción de tiempo. Sin embargo, un beneficio es que reduce el tamaño de almacenamiento de 8 bytes a 3 bytes. De cualquier manera, solo haría esta conversión si no necesita la porción de tiempo.

La fechahora el tipo de datos incluye la fecha y la hora, con una parte de segundos fraccionarios de 3 dígitos. Su precisión se redondea a incrementos de 0,000, 0,003 o 0,007 segundos.

Sin embargo, la fecha tipo de datos tiene una precisión de 1 día (y no incluye el tiempo, como se mencionó).

Ejemplo 1:conversión implícita

Este es un ejemplo de una conversión implícita entre datetime y fecha .

DECLARE 
  @thedatetime datetime, 
  @thedate date;
SET @thedatetime = '2025-05-21 10:15:30.123';
SET @thedate = @thedatetime;
SELECT 
  @thedatetime AS 'datetime',
  @thedate AS 'date';

Resultado:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 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 entre bastidores cuando intentamos asignar la fecha y hora valor a una fecha variables.

En este ejemplo podemos ver que la fecha el valor solo incluye la fecha (sin el componente de hora).

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 datetime y fecha .

DECLARE @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CAST(@thedatetime AS date) AS 'date';

Resultado:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 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 @thedatetime datetime;
SET @thedatetime = '2025-05-21 10:15:30.123';
SELECT 
  @thedatetime AS 'datetime',
  CONVERT(date, @thedatetime) AS 'date';

Resultado:

+-------------------------+------------+
| datetime                | date       |
|-------------------------+------------|
| 2025-05-21 10:15:30.123 | 2025-05-21 |
+-------------------------+------------+