max(a1,a2,a3) t1
min(b1,b2,b3) t2
if t1>t2 return null
if t1<=t2 retrun t1至t2就是这个意思,至于语句自己写吧

解决方案 »

  1.   

    在3个A中找到最大值,在3个B中找到最小值。用B的最小值减A的最大值就得到结果。
    SELECT (LEAST(B1,B2,B3) - GREATEST (A1, A2, A3))*24 into v_time FROM DUAL;
      

  2.   

    附日期大小比较规则Date Values 
    A later date is considered greater than an earlier one. For example, the date equivalent of '29-MAR-1997' is less than that of '05-JAN-1998' and '05-JAN-1998 1:35pm' is greater than '05-JAN-1998 10:09am'. 
      

  3.   

    create or replace function getmidtime(
    A1 date,
    B1 date,
    A2 date,
    B2 date,
    A3 date,
    B3 date
    ) return number
    as 
    v_h number;
    v_a date;
    v_b date;
    begin
    if A1>A2 then v_a:=A1; else v_a:=A2; end if;
    if A3>v_a then v_a:=A3;end if;
    if B1<B2 then v_b:=B1;else v_b:=B2;end if;
    if B3<v_b then v_b:=B3;end if;
    if v_a<v_b then return (v_b-v_a)*24;esle return null;end if;
    end;
    /