gpt4 book ai didi

mysql - 插入mysql日期范围,每7天添加不同的值(轮类日历)

转载 作者:行者123 更新时间:2023-11-29 11:49:01 25 4
gpt4 key购买 nike

我正在尝试制作一个轮类日历,员工可以在一周内工作 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

员工表示例数据:

table data

我尝试了以下方法,效果很接近,但是日期都是相同的日期,这会导致无限循环:

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');

最佳答案

我不知道循环中的逻辑是否正确,但如果您希望它终止,则需要增加dateStart:

所以添加:

set dateStart = date_add(dateStart, INTERVAL 1 DAY);

就在END WHILE之前。

关于mysql - 插入mysql日期范围,每7天添加不同的值(轮类日历),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34472285/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com