Remover la hora en una variable DateTime usando SQL SERVER


Aveces utilizamos variables DateTime y guardamos fecha y hora, por ejemplo en una tabla de LOG, pero el problema es que luego deseamos realizar un filtro solo por la fecha y tendremos problemas les podre un ejemplo:
Registro1 01/01/2010 01:01:12
Registro2 02/01/2010 12:50


Si quiero realizar un filtro que devuelva todos los registros del 2 de diciembre al 2 de enero seria asi:

SELECT Registro FROM Registros 
WHERE Fecha BETWEEN ‘02/12/2009’ AND ‘02/01/2010’ 


Solo me traerá el registro uno, ya que al tomar la hora toma la Fecha de registro2 con una fecha mayor a la ingresada en el filtro .
La solución es realizar una doble conversión primero a Varchar y luego a DateTime

SELECT Registro
FROM Registros 
WHERE CONVERT(DateTime,CONVERT(varchar, Fecha , 101),103)
BETWEEN ‘02/12/2009’ AND ‘02/01/2010’ 


De esta manera pueden quitar la hora, tanto para comprar como para algún dato que entre como parámetro algún procedimiento almacenado o función. pueden jugar con el formato de la conversion si quieren otro tipo de resultados.
Espero que a todos les sirva, si les sirve me cuentan :).

4 comentarios en «Remover la hora en una variable DateTime usando SQL SERVER»

Los comentarios están cerrados.