В проекте, над которым я сейчас работаю, система хранит расписания сотрудников в таблице со следующей структурой:
employee_id | mon_h_s | mon_m_s | mon_h_e | mon_s_e | tue_h_s | tue_m_s | etc.
------------------------------------------------------------------------------
1 06 00 14 30 06 00 ...
2 18 30 07 00 21 00 ...
где:
mon_h_s
- начало понедельника
mon_m_s
- начало понедельника минут
mon_h_e
- конец понедельника
mon_m_e
- конец понедельника минут
tue_...
- вторник ...
Каждый день недели имеет 4 поля: начало часов, начало минут, конец часов, конец минут.
Итак, из приведенной выше таблицы видно, что:
сотрудник с id 1 работает с 06: 00 до 14: 30 в понедельник
сотрудник с id 2 работает с 18: 30 до 07: 00 в понедельник (в основном, с понедельника по вторник, ночью )
Проблема в том, что я не уверен, как создать запрос SQL, который учитывает все, включая перекрытие времени (в ночное время). Например, нам нужно найти сотрудника, который работает в 6:00 (06:00) во вторник. В нашем случае оба сотрудника (id 1 и id 2) будут удовлетворять этому критерию. Сотрудник с идентификатором 1 начинает свою работу во вторник в 06:00, а сотрудник с идентификатором 2 работает до вторника в 07:00 (хотя начинается в понедельник).
Будем весьма благодарны за любые предложения по решению этой проблемы.