Chinaunix首页 | 论坛 | 博客
  • 博客访问: 92186160
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类: Oracle

2008-04-04 13:24:58

来源:赛迪网    作者:Alice

如何在Oracle中实现时间相加处理?

今天由于项目的需要,我负责编写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
阅读(280) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~