如何在Oracle中实现时间相加处理? 今天由于项目的需要,老大让我负责编写Oracle中的存储过程。嘿,以前从来没有接触过,这次是个很好的学习机会,好好把握! 但是,在使用过程中,遇到一个问题,不知道该如何实现时间相加功能,因为系统中需要用来时间相加功能。通过网络找资料,但是最终一无所获。于是,决定自己写一个!希望可以给朋友有所帮助!
-- 名称:Add_Times -- 功能:返回d1与NewTime相加以后的结果,实现时间的相加 -- 说明:对于NewTime中的日期不予考虑 -- 日期:2004-12-07 -- 版本:1.0 -- 作者:Kevin
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
|