Вы можете использовать 3 поля для хранения этой информации,
slot_date - to store date of slot like 2018-12-17, 2018-12-18, etc
slot_time - to store time slot like 13:00:00, 15:00:00, etc
user_id - to store user identifier
Допустим, ваши примерные данные для 2 пользователей с этими полями будут выглядеть примерно так:
slot_date slot_time user_id
---------------------------------
2018-12-17 14:00:00 1
2018-12-17 17:00:00 2
Вы можетелегко получить доступность пользователей для данного временного интервала.Например, вы хотите получить текущую доступность для дневного слота (учитывая, что с 13 до 16 часов - это вечерний слот), который можно получить по следующему запросу:
SELECT slot_date, slot_time, user_id
FROM tbl_slot
WHERE slot_date = '2018-12-17'
AND slot_time BETWEEN '13:00:00' AND '15:00:00'
Аналогично, вы можете изменить slot_time
в запросе для работы на утренние и вечерние слоты.
Обновление
На основании требования OP, если пользователь выбирает день и слот, он будет применим длякаждый месяц / год.Исходя из этого, вы исключаете столбец slot_date
и используете day_of_week
, в котором будут храниться целочисленные значения от 1 до 7, т.е.будет,
SELECT day_of_week, slot_time, user_id
FROM tbl_slot
WHERE day_of_week = '2'
AND slot_time BETWEEN '13:00:00' AND '15:00:00'