获取工作日中 2 个日期之间的日期 MySQL 未来时间表

Get dates from weekdays between 2 dates MySQL future schedule

我正在尝试创建一个时间表 table 一年中每周 MySQL

我有一个包含以下示例数据的 table:

employee start_date end_date weekday shift_start shift_end
1 2021-10-01 2021-10-31 0 08:00:00 17:00:00
1 2021-10-01 2021-10-31 2 08:00:00 17:00:00
1 2021-10-01 2021-10-31 4 08:00:00 17:00:00
2 2021-10-01 2021-10-31 0 08:00:00 17:00:00
2 2021-10-01 2021-10-31 3 08:00:00 17:00:00
2 2021-10-01 2021-10-31 4 08:00:00 17:00:00

每周的时间表都相同,因此工作日列。

为了简单起见,我还有一个日历 table,其中包含未来 2 年的日期,架构如下:

fulldate year month day week dayofweek
0000-00-00 0000-9999 0-11 0-30 0-53 0-6

我想在某个周数得到如下所示的 table 输出:(例如 2021 年第 40 周)

date employee weekday shift_start shift_end
2021-10-04 1 0 08:00:00 17:00:00
2021-10-04 2 0 08:00:00 17:00:00
2021-10-06 1 2 08:00:00 17:00:00
2021-10-07 2 3 08:00:00 17:00:00
2021-10-08 1 4 08:00:00 17:00:00
2021-10-08 2 4 08:00:00 17:00:00

我已经坚持了一段时间,但我没有在互联网上找到解决方案,也没有在创建 table 方面迈出一步。任何正确方向的帮助将不胜感激

您的问题的解决方案是:

SELECT
c.fulldate as date,
t.employee,
t.weekday,
t.shift_start,
t.shift_end
FROM calendar AS c
INNER JOIN table1 AS t
ON c.dayofweek = t.weekday
ORDER BY c.fulldate,t.employee,t.weekday

演示 Link: http://sqlfiddle.com/#!9/4c8681/4

解释:

日历 table 应在工作日列中与输入 table 进行内部联接,以获得需要结果的日期。

'WHERE' 子句可用于根据要求过滤出结果。例如,如果第 40 周需要输出,则在 'ORDER BY' 子句之前的上述查询中使用“WHERE c.week=40”以获得所需结果。