1

我是 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;
4

0 回答 0