在我现在正在处理的项目中,系统将员工的时间表存储在具有以下结构的表中:
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 点(06:00)工作的员工。在我们的例子中,两个员工(id 1 和 id 2)都会满足这个标准。id 为 1 的员工在周二 06:00 开始工作,id 为 2 的员工工作到周二 07:00(不过从周一开始)。
任何有关如何解决此问题的建议将不胜感激。