2017-03-29 2 views
0

입력 지속 시간을 시간 단위로 계산하려면 트리거를 만들고 싶습니다.mysql 트리거는 시작 시간과 종료 시간을 기준으로 지속 시간을 계산합니다.

다음 코드가 있지만 올바르지 않으며 이유를 모르겠습니다.

create trigger Calculate_Duration 
before insert or update on Tbl_Eventos 

for each row 
declare 
begin 
    :new.duration := :new.endtime - :new.starttime 
END; 

내 테이블은 다음과 같이이다 :

Table

+0

를 작동합니다 트리거 대신 생성 된 열을 고려할 수 있습니다. [Generated Column Docs] (https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html) – Arth

+0

'5.7.17-0ubuntu0.16.04.1'을 사용하고 있습니다. – AnonDSB

+0

네, 그게 5.7.6보다 최근인데, 그걸 사용할 수 있어야합니다. – Arth

답변

0

이의이 시도하자,

당신이 MySQL을 5.7.6+을 사용하는 경우

CREATE TRIGGER Calculate_Duration BEFORE INSERT OR UPDATE ON Tbl_Eventos FOR EACH ROW SET NEW.duration = TIMEDIFF(NEW.endtime, NEW.starttime); 
+0

감사합니다. – AnonDSB

+0

if 조건을 어떻게 만듭니 까? starttime = 8 : 00이고 endtime = 18 : 00이면 duration = 8:00 – AnonDSB

+0

이렇게 작성했습니다 : CREATE DEFINER ='루트'@'%'TRIGGER Calculate_Duration_insert BEFORE INSERT ON Tbl_Eventos 각 행에 대해 IF TIMEDIFF (NEW.endtime, NEW.starttime)> 80000 그 다음 \t SET NEW.duration = '8:00:00'; ELSE \t SET NEW.duration = TIMEDIFF (NEW.endtime, NEW.starttime); END IF – AnonDSB

관련 문제