如何计算两个日期的时间差(去除非工作时间)

coolzdp 2012-12-05 03:00:53
比如2012-12-05 到 2012-12-15
直接减时间差240小时,但是只计算上班时间(周一到周五 08:00-12:00 13:00-17:00)的话
该怎么写sql呢

下面是一个计算两个日期差的函数
CREATE OR REPLACE Function ITSL.timeinterval (d_begindate Date,d_enddate Date) --计算两个日期之间相差的天数、小时数、分钟数、秒数
Return Varchar2
Is
s_timeinterval Varchar2(40);n_timeinterval Number;n_day Number;n_hour Number;n_minute Number;n_second Number;n_timesurplus Number;
Begin
If d_begindate Is Null Or d_enddate Is Null Then
s_timeinterval:=Null;
Else
Select (d_enddate-d_begindate)*24*60*60 Into n_timeinterval From dual;
n_day:=floor(n_timeinterval/24/60/60);
n_timesurplus:=Mod(n_timeinterval,24*60*60);
n_hour:=floor(n_timesurplus/60/60);
n_timesurplus:=Mod(n_timesurplus,60*60);
n_minute:=floor(n_timesurplus/60);
n_timesurplus:=Mod(n_timesurplus,60);
n_second:=floor(n_timesurplus);
s_timeinterval:=n_day||'天'||n_hour||'小时'||n_minute||'分'||n_second||'秒';
End If;
Return s_timeinterval;
End;
/
...全文
460 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq53090120 2012-12-06
  • 打赏
  • 举报
回复
两个时间相减乘以24。。。。。。。
mmtaoli8 2012-12-06
  • 打赏
  • 举报
回复
关注这个问题中
coolzdp 2012-12-06
  • 打赏
  • 举报
回复
主要是工作时间不好弄啊
软件钢琴师 2012-12-05
  • 打赏
  • 举报
回复
直接 select to_char(SYSDATE,'Dy') from dual;不就知道星期几了么

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧