sql工作日历表查询全部日期与当天的工作时间间隔
时间: 2023-09-14 19:07:17 浏览: 66
得到开始日期和结束日期之间的工作日天数sql
可以使用一个工作日历表和一个时间表来查询全部日期和当天的工作时间间隔。假设工作日历表名为calendar,包含以下字段:日期(date)、是否工作日(is_workday)、上班时间(work_start_time)、下班时间(work_end_time)。时间表名为time,包含以下字段:时间(datetime)。
可以使用以下SQL语句来查询全部日期和当天的工作时间间隔:
```
SELECT c.date,
c.is_workday,
c.work_start_time,
c.work_end_time,
TIME_TO_SEC(LEAST(c.work_end_time, t.datetime) - GREATEST(c.work_start_time, t.datetime))) / 3600 AS work_hours
FROM calendar c
CROSS JOIN time t
WHERE c.date = DATE(t.datetime)
ORDER BY c.date, t.datetime;
```
这个查询使用了CROSS JOIN来生成所有日期和时间的组合,然后使用WHERE子句过滤出符合条件的记录。最后使用LEAST和GREATEST函数计算出当天的工作时间间隔,并使用TIME_TO_SEC函数将时间转换为小时数。
阅读全文