estoy buscando una respuesta ampliada a la pregunta formulada aquí:Fecha Rango Superposición con anulable Fechas
Determine Whether Two Date Ranges Overlap
en cualquiera de las fechas, ya sea en el intervalo de fechas puede ser nulo. He encontrado la siguiente solución, pero no estoy seguro si se puede simplificar aún más.
(StartA == NULL || StartA <= EndB) &&
(EndA == NULL || EndA >= StartB) &&
(StartB == NULL || StartB <= EndA) &&
(EndB == NULL || EndB >= StartA)
Suponiendo:
rangos DateTime de starta a EndA y StartB a ENDB
EDIT: En este momento me tiró rápidamente la lógica anterior juntos, lo que parece fallar cuando cualquiera de inicio y final del rango las fechas son NULL. Vea la solución de David a continuación para un mejor enfoque bien explicado de &.
tendrá un error si StartA es nulo, porque el operador de comparación no funciona con nulo. Convierta todo o Gate {Logic} en {Logic} y luego reorganice las declaraciones poniendo all compare in null al inicio para que el cortocircuito y {Logic} funcionen. –