去年StackOverflow提供了一些(很多)帮助,我有一个功能,可以显示当前有多少员工在工作。
代码工作正常 - 但现在我们实施了夜班,原始查询只显示了当前日期开始的班次。工作夜班的人可能会在晚上10点办理登机手续,早上8点休假 - 在当前查询中,他们不会出现,因为startdate就在前一天......
我一直在尝试在查询中实现enddate,但没有运气。
teamslots
---------
id
startdate
starttime
enddate
endtime
teamslot_schedule
-----------------
id
slotid (joins to is in teamslots)
userid
shifthours
----------
thehour
这是原始查询 - 我真的可以使用一些帮助,使查询包括员工,这些员工在前一天开始转移,但结束"今天"。
SELECT
DATE_FORMAT(d.startdate + INTERVAL s.thehour HOUR, '%Y-%m-%d %H') AS date,
COUNT(DISTINCT ts.userid) AS users
FROM
shifthours s
JOIN
(SELECT DISTINCT startdate FROM teamslots) d
LEFT JOIN
teamslots t ON t.startdate = d.startdate AND
s.thehour BETWEEN HOUR(t.starttime) AND HOUR(t.endtime)
LEFT JOIN
teamslot_schedule ts ON ts.slotid = t.id
GROUP BY
d.startdate,
s.thehour
ORDER BY
d.startdate + INTERVAL s.thehour HOUR;
祝你好运, 标记
答案 0 :(得分:0)
使用MySQL CURDATE()函数并为您的班次减去适当的间隔。