我在MySQL中做了一个表,以日期时间类型存储工作班次的开始和结束时间。我需要从中计算出两件事(在MySQL中)。首先,某人在晚上10点至凌晨6点之间轮班工作了多少分钟,以及某周日工作了多少分钟。周日应优先于那些夜间,并且不应将周日的早晨计算两次。
先感谢您。
D.
我尝试了一下,但没有成功:
SELECT *,
IF(DAYNAME(start)=DAYNAME(end),
IF(TIME(start)<='6:00:00' AND TIME(end)<='6:00:00',TIME(end)-TIME(start),
IF(TIME(start)>='22:00:00' AND TIME(end)>='22:00:00',TIME(end)-TIME(start),
IF(TIME(start)>='6:00:00' AND TIME(end)<='22:00:00',0,
IF(TIME(start)<='6:00:00' AND TIME(end)<='22:00:00','6:00:00'-TIME(start),
IF(TIME(start)>='6:00:00' AND TIME(end)>='22:00:00',TIME(end)-'22:00:00',NULL)
)
)
)
),
IF(TIME(start)<='22:00:00' AND TIME(end)<='6:00:00','2:00:00'+TIME(end),
IF(TIME(start)<='22:00' AND TIME(end)>='6:00:00','8:00:00',
IF(TIME(start)>='22:00:00' AND TIME(end)<='6:00:00','24:00:00'-TIME(start)+TIME(end),
IF(TIME(start)>='22:00:00' AND TIME(end)>='6:00:00','24:00:00'-TIME(start)+'6:00:00',NULL)
)
)
)
) AS ExtraTime FROM `work`
最佳答案
分钟的工作时间:
SELECT TIMESTAMPDIFF(MINUTE, `start_time`, `end_time`) FROM ... WHERE DAYOFWEEK(`start_time`) != 1
在星期天的会议记录:
SELECT TIMESTAMPDIFF(MINUTE, `start_time`, `end_time`) FROM ... WHERE DAYOFWEEK(`start_time`) = 1
关于mysql - 如何计算夜类和周日的额外工资,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6383350/