Tengo dos tablas, ambas con campos de hora de inicio y hora de finalización. Necesito encontrar, para cada fila en la primera tabla, todas las filas en la segunda tabla donde los intervalos de tiempo se cruzan.¿Cuál es una forma simple y eficiente de encontrar filas con superposiciones de intervalos de tiempo en SQL?
Por ejemplo:
<-----row 1 interval------->
<---find this--> <--and this--> <--and this-->
frase por favor su respuesta en forma de un WHERE
-clause SQL, y considerar el caso en que la hora de finalización de la segunda tabla puede ser NULL
.
La plataforma de destino es SQL Server 2005, pero las soluciones de otras plataformas también pueden ser de interés.
posible duplicado de [Determinar si se superponen dos rangos de fechas] (http://stackoverflow.com/questions/325933/determine-whether-two-date-ranges-overlap) –
Presumiblemente, si el tiempo de finalización en la segunda tabla es NULL, debe tratarse como "el período no tiene un tiempo de finalización y continúa en el futuro". Eso es lo que hace la respuesta aceptada; es una interpretación común, pero no es la única interpretación posible. –