Хранение выбирается исходя из целей: расписание нужно только лишь показывать или по нему нужно искать.
Если только показывать - то можно для любого расписания придумать замысловатую конструкцию в формате JSON, а можно текстом хранить, а можно и HTML.
Если требуется искать, то нужно понимать - можно ли по этой структуре написать алгоритм поиска. Возможно будет эффективнее представить расписание как записи: в такой-то день недели с такого-то времени по такое-то время РАБОТАЕТ или наоборот НЕ РАБОТАЕТ
CREATE table `workinghours` (
`timefrom` unsigner integer COMMENT "Время начала", /*0 ... 2359 - перевод часов минут в целочисленный формат*/
`timeto ` unsigner integer COMMENT "Время окончания", /* 0 ... 2359 */
`weekday` unsigner integer COMMENT "День недели" /* { 1, 2, 3, 4, 5, 6, 7 } */
);
на случай, если расписание действует какой-то календарный период времени, необходимо ещё добавить пару свойств
`datefrom` date COMMENT "Начало календарного периода",
`dateto` date COMMENT "Окончание календарного периода",