如何获取MySQL存储过程中报告的每天额外注册的小时数
有一个考勤报告,显示每个用户的入口、午餐时间出口、午餐时间入口和最终出口,我需要显示额外的工作时间,只计算20:30之后的时间,并限制为21:30 i、 e。 如果员工在20:10左右报告退出,则不应计入额外时间 如果工作人员在21:00左右报告退出,则应计为额外时间 如果员工在21:30后报告退出,则在21:30之前只应计为额外时间 具有下表:如何获取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
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