Saltar al contenido

Compare fechas en T-SQL, ignorando la parte del tiempo

Luego de de esta larga búsqueda de datos pudimos resolver este rompecabezas que suelen tener algunos lectores. Te brindamos la respuesta y nuestro objetivo es que resulte de mucha apoyo.

Solución:

La forma más razonable de hacer esto es quitar la parte de tiempo de los valores de fecha y hora y comparar los resultados, y la mejor manera de quitar la parte de tiempo de una fecha y hora es así:

cast(current_timestamp as date)    

Solía ​​​​usar y defender un proceso que se parecía a una de las siguientes dos líneas:

cast(floor(cast(getdate() as float)) as datetime)
dateadd(dd,0, datediff(dd,0, getDate()))

Pero ahora que Sql Server tiene la Date tipo, que no tiene un componente de tiempo, hay pocas razones para usar cualquiera de esas técnicas.

Una cosa más a tener en cuenta es que esto aún atascará una consulta si necesita hacerlo para dos valores de fecha y hora para cada fila en una cláusula where o condición de combinación. Si es posible, desea factorizar esto de alguna manera para que se calcule previamente tanto como sea posible, por ejemplo, utilizando una vista o una columna calculada.

Finalmente, tenga en cuenta que la función DATEDIFF compara el número de límites cruzados. Esto significa el fechado en días entre '2009-09-14 11:59:59' y '2009-09-15 00:00:01' es 1, aunque solo han transcurrido 2 segundos, pero el DATEDIFF en días entre '2009-09-15 00:00:01' y '2009-09-15 11:59:59' sigue siendo cero, aunque hayan transcurrido 86.398 segundos. Realmente no le importa en absoluto la porción de tiempo allí, solo los límites. Dependiendo de lo que intente hacer su consulta, es posible que pueda usar eso para su beneficio.

DONDE FECHADIFF(día, fecha1, fecha2)=0

En mi propio trabajo, cuando quería determinar que dos fechas eran iguales independientemente de la hora del día, usé lo siguiente:

WHERE CONVERT(VARCHAR, date1, 101) = CONVERT(VARCHAR, date2, 101)

Por supuesto, la “comparación” incluye mucho más que la igualdad y lo anterior convierte las fechas al formato de EE. UU. MM/DD/YYYY antes de realizar la comparación. Entonces, implicaciones de rendimiento e incapacidad para comparar diferencias de fechas.

Pero… funciona.

Reseñas y puntuaciones de la guía

Al final de todo puedes encontrar las acotaciones de otros gestores de proyectos, tú asimismo tienes la habilidad insertar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *