【发布时间】:2021-07-11 17:49:51
【问题描述】:
我目前正在处理几个 MySQL 事件,以发布未来 14 天的员工日程安排。
每个员工每天都有固定的时间表。我目前有一个包含时间表的表,但它没有日期,而是日期名称。下面是一个表格示例:
| ID | EmpID | LOB | DOW | event | StartAt | EndAt |
------------------------------------------------------------------------
| 1 |Z.Mora3847| FNOL | Monday | Shift | 9:00 | 17:30 |
| 2 |Z.Mora3847| FNOL | Tuesday | Shift | 9:00 | 17:30 |
| 3 |Z.Mora3847| FNOL | Wednesday| Shift | 9:00 | 17:30 |
我必须找到一种方法,根据该表中的星期几为每个员工生成接下来 2 周的时间表,并将其存储到一个类似的表中,在该表中,我们有一个名为“dow”的列,而不是列“日期”,它必须包含与第一个表中的日期名称匹配的未来日期。
如果我尝试这个,它会返回一天的预期值:
select SB.EmpID, SB.lob, dow, date_add(curdate(),interval 1 day) as Date, SB.StartAt, SB.EndAt from SandBox.ScheduleBase as SB where dayname(date_add(curdate(), interval 1 day)) = dow
这是输出:
| ID | EmpID | LOB | DOW | Date | StartAt | EndAt |
------------------------------------------------------------------------
| 1 |Z.Mora3847|FNOL | Saturday | 2021-04-17 | 9:00 | 17:30 |
而且我希望能够在接下来的 14 天内做到这一点。
我正在使用 5.5.68-MariaDB
希望你们能帮我解决这个问题。
【问题讨论】:
-
你尝试了什么?也许这有助于
select now(), dayname(now());将输出今天的日期和今天的日期名称(“星期五”)。 -
这是我尝试过的,它适用于一个日期:'select SB.EmpID, SB.lob, date_add(curdate(),interval 1 day), SB.event, SB.StartAt, SB .EndAt from SandBox.ScheduleBase as SB where dayname(curdate()) = dow' 但是我该如何获得接下来的 14 天?
-
请将该信息添加到您的问题中(使用edit 功能)
-
您使用的是哪个版本的 MySQL?您能否将其输出添加到问题中:
SELECT @@VERSION;? -
我刚刚更新了问题,感谢您的反馈。
标签: mysql