Вот то, что я искал по сети
Чтобы проверить перекрытие:
Пусть CondA означает DateRange A полностью после DateRange B (True, если StartA> EndB)
Пусть CondB означает DateRange A полностью перед DateRange B (True, если EndA
Тогда перекрытие существует, если ни A, ни B не верны (если один диапазон не полностью ни за другим, ни полностью перед другим, тогда они должны перекрываться)
Теперь закон Деморгана, я так думаю, гласит, что
Не (A или B) <=> Не A и не B
Что означает (StartA <= EndB) и (EndA> = StartB)
ПРИМЕЧАНИЕ. Это включает условия, когда края точно перекрываются. Если вы хотите исключить это, измените операторы> = на>, а <= на <</p>
Итак, основываясь на значении перекрытия, я могу определить, сколько столбцов добавить.