【发布时间】:2018-05-23 18:34:49
【问题描述】:
我想从表 employees 中查询员工 ID 列表,但如果它位于特定 datetime 和相同的 datetime + 8 hours 之间,则排除已经在名为 employee_schedule 的单独表中的员工 ID。出于其他原因,我没有使用日期时间结束轮班。
SELECT user_id
FROM employees AS t1
LEFT OUTER JOIN employee_schedule AS t2 ON t1.user_id = t2.assigned_guard_id
WHERE t2.assigned_guard_id IS NULL
AND ('2017-10-23 18:00:00' BETWEEN t2.shift_start
AND ADDTIME(t2.shift_start, '12:00:00'))
结果:
`employees` | `employee_schedule`
----------------------------------------------------------------------------------------
id | guard_assigned_id, shift_start(datetime), shift_duration(INT, minutes)
----------------------------------------------------------------------------------------
17 | 17, '2017-10-23 18:00:00', '480'
19 |
22 |
----------------------------------------------------------------------------------------
结果应该只显示19 和22,因为17 出现在shift_start 和shift_start + shift_duration 之间的计划中。
我的查询返回 0 个结果。
【问题讨论】:
标签: mysql datetime join date-arithmetic