轻轻松松学会在Oracle中实现时间相加处理

2014-11-24 17:23:14 · 作者: · 浏览: 0

今天由于项目的需要,我负责编写Oracle中的存储过程。以前从来没有接触过,这次是个很好的学习机会,好好把握!


但是,在使用过程中,遇到一个问题,不知道该如何实现时间相加功能,因为系统中需要用来时间相加功能。通过网络找资料,但是最终一无所获。于是,决定自己写一个!希望可以给朋友有所帮助!


create or replace function Add_Times


(d1 in date,NewTime in date) return date


is


hh number;


mm number;


ss number;


hours number;


dResult date;


begin


-- 下面依次取出时、分、秒


select to_number(to_char(NewTime, HH24 )) into hh from dual;


select to_number(to_char(NewTime, MI )) into mm from dual;


select to_number(to_char(NewTime, SS )) into ss from dual;


-- 换算出NewTime中小时总和


hours := (hh + (mm / 60) + (ss / 3600))/ 24;


-- 得出时间相加后的结果


select d1 + hours into dResult from dual; return(dResult); end Add_Times;


-- 测试用例


-- select Add_Times(sysdate,to_date


( 2004-12-06 03:23:00 , YYYY-MM-DD HH24:MI:SS ))


from dual