Как лучше «спроектировать» базу данных?
Доброе утро. Ответ на ваш вопрос - DATETIME. Остальное, в том числе разбиение - организуйте через логику.
Дату храним в DATE (по нему обычно только фильтрация WHERE date BETWEEN x AND y и никаких расчетов), а время в MEDIUMINT(5) [0...86400] (количество секунд от начала дня). Данный пример позволяет легко и быстро получать длительности временных промежутков между двумя точками отсчета.