若是有日期部分,也可计算出两日期相差--时间:分:秒. 以下一函数出自某位人兄: CREATE OR REPLACE FUNCTION sec_div(sec NUMBER) RETURN VARCHAR2 IS i NUMBER(20,14); h INTEGER; m INTEGER; s INTEGER; result VARCHAR2(20) ; BEGIN i:=sec/3600; IF trunc(i)>0 THEN h:=trunc(i); i:=i-trunc(i); ELSE h:=0; END IF; IF i*60>0 THEN m:=trunc(i*60); i:=i*60-trunc(i*60); ELSE m:=0; END IF; IF i*60>0 THEN s:=round(i*60); ELSE s:=0; END IF; result:=to_char(h)||'时'||to_char(m)||'分'||to_char(s)||'秒'; RETURN(Result); END sec_div;select sec_div(date1-date2) from dual;
日期相减结果是天数.
trunc(),round()
以下一函数出自某位人兄:
CREATE OR REPLACE FUNCTION sec_div(sec NUMBER)
RETURN VARCHAR2
IS
i NUMBER(20,14);
h INTEGER;
m INTEGER;
s INTEGER;
result VARCHAR2(20) ;
BEGIN
i:=sec/3600;
IF trunc(i)>0 THEN
h:=trunc(i);
i:=i-trunc(i);
ELSE
h:=0;
END IF;
IF i*60>0 THEN
m:=trunc(i*60);
i:=i*60-trunc(i*60);
ELSE
m:=0;
END IF;
IF i*60>0 THEN
s:=round(i*60);
ELSE
s:=0;
END IF;
result:=to_char(h)||'时'||to_char(m)||'分'||to_char(s)||'秒';
RETURN(Result);
END sec_div;select sec_div(date1-date2) from dual;
我已經用程序實現了,隻是速度有點慢