我是 MySql 的新手......我试图编写一个函数来计算任何驱动程序的总打孔时间。我的表中有 driver_id、login_datetime、login_status(0/1)。如果 login_status 为 1 ,则 login_datetime 为登录时间,如果 status 为 0 则为注销时间。
我想传递驱动程序 ID 并希望获得他的总工作时间....但是通过此代码,它不会返回任何获取或检索的行..请在这件事上提供帮助...
我的一段代码如下
DROP FUNCTION IF EXISTS `time_calc`;
CREATE DEFINER = `root`@`localhost` FUNCTION `time_calc`(driver integer)
RETURNS int(11)
BEGIN
DECLARE a BIGINT(255);
DECLARE b int(11);
DECLARE c INT(25);
DECLARE d TIMESTAMP;
DECLARE e TIMESTAMP;
DECLARE f TIMESTAMP;
DECLARE g VARCHAR(1);
DECLARE log_time TIMESTAMP;
DECLARE out_time TIMESTAMP;
DECLARE tot_time DOUBLE DEFAULT 0;
DECLARE pre_time DOUBLE DEFAULT 0;
DECLARE cnt INTEGER;
declare login_stat VARCHAR(1);
DECLARE cur1 CURSOR FOR SELECT * FROM clg where driver_id=driver;
OPEN cur1;
read_loop: LOOP
FETCH cur1 INTO a,b,c,d,e,f,g;
if g=1 THEN
SET log_time=f;
ELSEIF g=0 THEN
SET out_time=f;
SET pre_time= TIME_TO_SEC(TIMEDIFF(out_time,log_time))/3600;
end if;
SET tot_time=tot_time+pre_time;
END LOOP;
CLOSE cur1;
RETURN tot_time;
END;