Например первое условие необходимо посчитать разницу между датой начала и окончания и получить количество дней не составляет труда.
А вот посчитать по условию ДатаНачала следующей опереации минус ДатаКонца текущейоперации вот тут уже я не знаю, как посчитать подскажите.
Должно получить так
Операция1 ДатаНачала-01.01.19 ДатаКонца-02.01.19 РазницаМеждуОперациями - 0 (нет данных предыдущей операции)
Операция2 ДатаНачала-04.01.19 ДатаКонца-05.01.19 РазницаМеждуОперациями - 2 дня (04.01.19 - 02.01.19)
Операция3 ДатаНачала-05.01.19 ДатаКонца-06.01.19 РазницаМеждуОперациями - 0 (05.01.19 операция 3 - 05.01.19 операция 2)
Если данных не много, то не сложно. В лоб делать полное соединение , далее считать по нему минимальную границу начала которая больше даты конца - но на нескольких сотнях тысяч операций подавится.
Можно просто упорядочить и в цикле)