如何获取MySQL存储过程中报告的每天额外注册的小时数

如何获取MySQL存储过程中报告的每天额外注册的小时数,mysql,sql,Mysql,Sql,有一个考勤报告,显示每个用户的入口、午餐时间出口、午餐时间入口和最终出口,我需要显示额外的工作时间,只计算20:30之后的时间,并限制为21:30 i、 e。 如果员工在20:10左右报告退出,则不应计入额外时间 如果工作人员在21:00左右报告退出,则应计为额外时间 如果员工在21:30后报告退出,则在21:30之前只应计为额外时间 具有下表: CREATE TABLE `tblassistance` ( `Entrance` datetime NOT NULL, `LunchExit` da

有一个考勤报告,显示每个用户的入口、午餐时间出口、午餐时间入口和最终出口,我需要显示额外的工作时间,只计算20:30之后的时间,并限制为21:30

i、 e。 如果员工在20:10左右报告退出,则不应计入额外时间

如果工作人员在21:00左右报告退出,则应计为额外时间

如果员工在21:30后报告退出,则在21:30之前只应计为额外时间

具有下表:

CREATE TABLE `tblassistance` (
`Entrance` datetime NOT NULL,
`LunchExit` datetime DEFAULT NULL,
`LunchEntrance` datetime DEFAULT NULL,
`DayExit` datetime DEFAULT NULL,
`UserID` int(11) NOT NULL);


INSERT INTO tblassistance(Entrance, LunchExit, LunchEntrance, DayExit, UserID) VALUES ('2019-01-05 14:30:00','2019-01-05 15:30:00','2019-01-05 16:30:00','2019-01-05 21:30:00', '1');

INSERT INTO tblassistance(Entrance, LunchExit, LunchEntrance, DayExit, UserID) VALUES ('2019-01-05 14:30:00','2019-01-05 15:30:00','2019-01-05 16:30:00','2019-01-05 21:36:00', '2');

INSERT INTO tblassistance(Entrance, LunchExit, LunchEntrance, DayExit, UserID) VALUES ('2019-01-05 14:30:00','2019-01-05 15:30:00','2019-01-05 16:30:00','2019-01-05 21:00:00', '3');

INSERT INTO tblassistance(Entrance, LunchExit, LunchEntrance, DayExit, UserID) VALUES ('2019-01-05 14:30:00','2019-01-05 15:30:00','2019-01-05 16:30:00','2019-01-05 20:10:00', '4');
报告需要显示每个用户从每天20:30到21:30的额外时间

到目前为止,我已设法(尝试)勾勒出以下查询:

(SELECT TIMEDIFF(DATE(tblassistance.DayExit) = CURDATE() && tblassistance.DayExit> (SELECT CONCAT(CURDATE(), ' 21:30:00'))) GROUP BY tblassistance.userID, tblassistance.entrance 
原始报告采用存储过程格式,只接收初始和最终日期,还报告天数和与当前问题无关的其他参数。如果需要解决当前问题(获取一个日期报告的TIMEDIFF()额外时间量),我可以提供更多详细信息。

尝试以下查询:

SELECT 
        UserID, 
        GREATEST(
        "00:00:00", 
         TIMEDIFF( 
                  LEAST( DayExit, DATE_FORMAT( DayExit,  "%Y-%m-%d 21:30:00" ) ) , 
                  DATE_FORMAT( DayExit,  "%Y-%m-%d 20:30:00" ) 
                  ) 
                 )
FROM    `tblassistance` 

您好,Ghaamae,报告只需要四舍五入到额外的小时数,而忽略分钟数?您的
INSERT
语句已被破坏:
ER\u错误的值\u行计数:列计数与值计数不匹配
Hello Ass3mbler,报告所需的参数是每额外30分钟一次,而不是更少。@GMB已编辑,抱歉,谢谢。@Ghamae,好的,谢谢!20:30后会有额外的时间,问题是我需要约束忽略21:30限制参数后的额外时间好的,我没有正确理解你的问题,让我来编辑非常感谢@Ass3mbler,我有一个新问题,希望你能帮助。用于负值:SQLException:时间格式错误“-08:31:23.000000”如果在20:30之后没有报告额外时间,有没有办法避免计算额外时间?我刚刚为20:10退房的用户添加了一个插入项当然,我会添加costrain