所以我有一个包含开始日期时间和结束日期时间的条目表,我希望能够看到重叠,例如员工覆盖范围。例如,我有 10 名轮类员工,他们的开始时间和结束时间不同,我希望能够按小时查询并查看每小时有多少员工可用。
我没有尝试过,因为我没有找到开始的地方,当他们在特定时间传入任务时,我会做类似的事情来查看每个小时有多少个任务,但我试图查看每个小时的覆盖范围基于员工开始和结束的时间,例如 8 小时轮类、12 小时轮类等。这样我就可以看到我有 2、3、4 等...覆盖范围并映射到进来的任务数量并已计划。下面的内容看起来很有希望,但每个查询只能执行 1 次,希望有一个查询可以返回每小时以及每小时有多少个覆盖。
任何帮助都会很棒。
最佳答案
尝试这样的事情:
SELECT count(*) as TOTAL
FROM table
WHERE '2015-05-28 12:00:00'
BETWEEN startTime and endTime
显然,您需要将此 '2015-05-28 12:00:00'
更改为您要查找的日期/时间。
如果需要,添加其他条件...
编辑
添加额外请求:
按日期和时间分组可提供每天一小时内的覆盖总数。
SELECT date(date_start) as DAY, hour(date_start) as HOUR, count(*) as TOTAL
FROM table
group by date(date_start), hour(date_start)
您显然可以添加一个或多个条件。 IE。在下面的示例中,您将获得一天(指定)内每小时的总行数
SELECT date(date_start) as DAY, hour(date_start) as HOUR, count(*) as TOTAL
FROM table
WHERE date('2015-05-28') = date(startTime)
group by date(date_start), hour(date_start)
关于mysql 查询覆盖率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30508483/