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

¿Cómo se extrae solo la fecha de la fecha y la hora en T-Sql?

La mejor manera es:

   SELECT DATEADD(day, DATEDIFF(Day, 0, @ADate), 0) 

Esto se debe a que, internamente, SQL Server almacena todas las fechas como dos números enteros, de los cuales el primero es el ****número de días*** desde el 1 de enero de 1900. (El segundo es la porción de tiempo, almacenada como el número de segundos desde medianoche (segundos para SmallDateTime s, o milisegundos para DateTime s)
Usar la expresión anterior es mejor porque evita todas las conversiones, leyendo y accediendo directamente a ese primer entero en una representación interna de fechas sin tener que realizar ningún procesamiento... los dos ceros en la expresión anterior (que representan 1 enero de 1900), también se utilizan directamente sin procesamiento o conversión, porque coinciden con la representación interna del servidor SQL de la fecha 1 de enero de 1900 exactamente como se presenta (como un número entero).

*NOTA. En realidad, el número de límites de fechas (medianoches) que debe cruzar para pasar de una fecha a otra.