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