protected function fixOverlappingStartEndDates()
    {
        $rs = $this->connection->executeQuery(<<<'EOT'
select
    cv1.cID,
    cv1.cvID
from
    CollectionVersions as cv1
    inner join CollectionVersions as cv2
        on cv1.cID = cv2.cID
        and cv1.cvID <> cv2.cvID
        and cv1.cvIsApproved = cv2.cvIsApproved
where
    cv1.cvIsApproved = 1
    and ifnull(cv1.cvPublishDate, '0000-00-00 00:00:00') <= ifnull(cv1.cvPublishEndDate, '9999-99-99 99:99:99')
    and ifnull(cv1.cvPublishEndDate, '9999-99-99 99:99:99') >= ifnull(cv2.cvPublishDate, '0000-00-00 00:00:00')
order by
    cv1.cID,
    cv1.cvID desc
EOT
        );
        $page = null;
        while (($row = $rs->fetch(PDO::FETCH_ASSOC)) !== false) {
            if ($page === null || $page->getCollectionID() != $row['cID']) {
                $page = Page::getByID($row['cID'], $row['cvID']);
            } else {
                $page->loadVersionObject($row['cvID']);
            }
            $version = $page->getVersionObject();
            // Force fixing other collection version publish date/time interval
            $version->setPublishInterval($version->getPublishDate(), $version->getPublishDate());
        }
    }