【发布时间】:2016-04-01 01:11:01
【问题描述】:
我正在尝试制作一个轮班日历,其中员工可以在一周内工作 30 小时,而在另一周内工作 40 小时。
每个员工可以有多个不同的周,每个周可以有不同的工作日、时间。
例如,如果一个员工有 2 个不同的工作周,在日历上应该是这样的:
1 | 01-01-2015 | week1 | employee1
2 | 01-02-2015 | week1 | employee1
3 | 01-03-2015 | week1 | employee1
4 | 01-04-2015 | week1 | employee1
5 | 01-05-2015 | week1 | employee1
6 | 01-08-2015 | week2 | employee1
7 | 01-09-2015 | week2 | employee1
8 | 01-10-2015 | week2 | employee1
我如何用一系列日期填充日历表,根据另一个表中的数据每 7 天添加一个不同的 week_id?
**Calendar table columns:**
- id
- date
- week_id
- employee_id
**Employee table columns:**
- id
- day_id
- employee_id
- week_id
- work_hours_from
- work_hours_to
Employee 表示例数据:
我尝试了以下方法,结果很接近,但日期都是相同的日期,导致无限循环:
DROP PROCEDURE IF EXISTS filldates;
CREATE PROCEDURE filldates(dateStart DATE, dateEnd DATE)
BEGIN
WHILE dateStart <= dateEnd DO
INSERT INTO prefix_calendar (date,week_id,employee_id)
SELECT date_add(dateStart, INTERVAL 1 DAY),week_id,employee_id FROM prefix_employee_hours WHERE employee_id = 5;
END WHILE;
END;
CALL filldates('2011-05-01','2011-05-05');
【问题讨论】:
标签: mysql date join calendar range