Как быстро накладывать временные интервалы?

Если сделать режим работы в JSON (1-7 это дни недели ПН-ВС, первое значение время работы, второе, время обеда, далее особые настройки для определённых дней):
{
"1": "09:00-18:00",
"2": "09:00-18:00",
"3": "09:00-18:00",
"4": "09:00-18:00",
"5": "09:00-18:00",
"6": "09:00-18:00",
"7": "09:00-17:00",

"1": "13:00-14:00",
"2": "13:00-14:00",
"3": "13:00-14:00",
"4": "13:00-14:00",
"5": "13:00-14:00",
"6": 0,
"7": 0,

"2017-12-31": "09:00-16:00",
"2018-01-01": 0,
"2018-01-02": "10:00-16:00",
}


Плюс со временем появляется занятое время, 1 строчка 1 запись например:

id / date / start / finish
1 2017-07-31 09:00 10:00


Вопросы:
1. Как теперь быстро и эффективно наложить все записи, на время работы и отдать клиенту оставшиеся свободные промежутки времени?

2. Нужная ли в этом случае БД с поиском по JSON, т.е. одна их последних версий mysql или postgresql? Ведь тогда можно не разбирать весь JSON каждый раз а сразу извлечь нужные значения, например, посмотреть есть ли для этой даты уникальный режим работы.

3. Не стоит ли хранить не время обеда, а 2 рабочих промежутка 09:00-13:00 и 14:00-18:00 тогда время обеда и занятые промежутки будут приведены к одному формату

4. К какому виду лучше привести данные что бы для поиска интервалов задействовать одну из готовых функций php для повышения скорости работы?
Думал про key > value БД но не очень понимаю что в данном случае будет key а что value
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
@Fortop
Tech/Team lead
  1. Для поиска интервалов нет готовых функций.
  2. А если сделать не в json.... а по-нормальному в виде структуры БД?
    Вот точно так же, как вы храните занятое время
  3. Подход, когда обед это такой же занятый промежуток как и прочие - правильный
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы