BEGIN
DECLARE n int;
DECLARE n2 int;
DECLARE n3 int;
DECLARE res int;
if(S<=S0 AND S0<=E0 AND E0<=E) THEN
SELECT (DATEDIFF(E0, S0)*(3600*24))+(TIME_TO_SEC(E0) - TIME_TO_SEC(S0)) INTO n;
elseif(S0<=S AND S<=E AND E<=E0) THEN
SELECT (DATEDIFF(E, S)*(3600*24))+(TIME_TO_SEC(E) - TIME_TO_SEC(S)) INTO n;
elseif(S<=S0 AND S0<=E AND E<=E0) THEN
SELECT (DATEDIFF(E, S0)*(3600*24))+(TIME_TO_SEC(E) - TIME_TO_SEC(S0)) INTO n;
elseif(S0<=S AND S<=E0 AND E0<=E) THEN
SELECT (DATEDIFF(E0, S)*(3600*24))+(TIME_TO_SEC(E0) - TIME_TO_SEC(S)) INTO n;
else SELECT 0 INTO n;
END IF;
SELECT n+(tol*60) INTO n2;
SELECT (DATEDIFF(E, S)*(3600*24))+(TIME_TO_SEC(E) - TIME_TO_SEC(S)) INTO n3;
IF(n2>=n3) THEN SELECT n3 INTO res;
ELSE SELECT n2 INTO res;
END IF;
RETURN res;
END