数据库模拟表如下

operate_id operate_type operate_date process_sn
1 GD 2013-09-15 17:18:37 10001
2 JD 2013-09-13 17:18:42 10001
3 GD 2013-09-19 17:18:42 10002
4 JD 2013-09-16 17:18:42 10002

查询出表中超时处理的单号数(即GD时间-JD时间>2个工作日的process_sn数)

ORACLE中时间段的工作日计算方法如下

select count(*)
from ( select rownum rnum
from all_objects
where rownum <= to_date('2013-09-12','yyyy-MM-dd') - to_date('2013-09-01','yyyy-MM-dd')+1 )
where to_char( to_date('2013-09-01','yyyy-MM-dd')+rnum-1, 'D' )
not in ( '', '' )

直接运用在查询条件中报ORA-01841错误如下(oracle optimizer--查询转换)

select count(a.process_sn)
from tbl_operate_process a,tbl_operate_process b where a.process_sn=b.process_sn and a.operate_type='GD' and b.operate_type='JD'
and (select count(*)
from ( select rownum rnum
from all_objects
where rownum <= to_date(substr(a.operate_date,0,10),'yyyy-MM-dd') - to_date(substr(b.operate_date,0,10),'yyyy-MM-dd')+1 )
where to_char( to_date(substr(b.operate_date,0,10),'yyyy-MM-dd')+rnum-1, 'D' )
not in ( '', '' ))>2

经过测试先建立function,再在查询条件中用function作为条件即可

create or replace function fun_workday(startdate in varchar2,enddate in varchar2)return number
IS
TOTALVALUE NUMBER;
begin
select count(*) into TOTALVALUE
from ( select rownum rnum
from all_objects
where rownum <= to_date(enddate,'yyyy-MM-dd') - to_date(startdate,'yyyy-MM-dd')+1 )
where to_char( to_date(startdate,'yyyy-MM-dd')+rnum-1, 'D' )
not in ( '', '' );
return TOTALVALUE;
end;
select count(a.process_sn) 
from tbl_operate_process a,tbl_operate_process b
where a.process_sn=b.process_sn and a.operate_type='GD' and b.operate_type='JD' and
(select fun_workday(substr(b.operate_date,0,10),substr(a.operate_date,0,10)) from dual)>2

oracle-计算工作日的更多相关文章

  1. Oracle计算连续天数,计算连续时间,Oracle连续天数统计

    Oracle计算连续天数,计算连续时间,Oracle连续天数统计 >>>>>>>>>>>>>>>>> ...

  2. Oracle计算两天两个日期间相差的天数

    Oracle计算两天两个日期间相差的天数: select to_date('19930411','yyyymmdd')-to_date('19890507','yyyymmdd') from dual ...

  3. Oracle计算时间差

    Oracle计算时间差表达式 --获取两时间的相差豪秒数 select ceil((To_date('2008-05-02 00:00:00' , 'yyyy-mm-dd hh24-mi-ss') - ...

  4. 计算工作日之后N天的日期

    1.假期实体类: package com.smics.date; import java.io.Serializable; import java.util.Date; public class Va ...

  5. Oracle计算数值型的幂次方——POWER()

    Oracle计算数值型的幂次方 简介:幂次方就是幂函数的变形,在POWER(value1,value2)中,value1就是函数的底数,value2就是函数的指数.如:POWER(value1,val ...

  6. 160_技巧_Power BI 新函数-计算工作日天数

    160_技巧_Power BI 新函数-计算工作日天数 一.背景 Power BI 2022 年 7 月 14 日更新了最新版本的,版本号为:2.107.683.0 . 更多更新内容可以查看官方博客: ...

  7. Oracle计算时间函数(numtodsinterval、numtoyminterval)

    numtodsinterval(<x>,<c>) ,x是一个数字,c是一个字符串,表明x的单位,这个函数把x转为interval day to second数据类型 常用的单位 ...

  8. oracle计算两个日期的时间差时分秒

    Oracle函数可以实现诸多的功能,下面就介绍使用oracle函数计算时间差的实现方法. 两个Date类型字段:START_DATE,END_DATE,计算这两个日期的时间差(分别以天,小时,分钟,秒 ...

  9. Oracle 计算两个日期间隔的天数、月数和年数

    在Oracle中计算两个日期间隔的天数.月数和年数: 一.天数: 在Oracle中,两个日期直接相减,便可以得到天数: select to_date('08/06/2015','mm/dd/yyyy' ...

  10. oracle计算某个表中数据所占表空间的比例

    要求计算某个表所占表空间的大小,网上查了些资料用到了oracle的3个视图.具体sql如下 select segment_name as tablename, round(bytes / (selec ...

随机推荐

  1. 利用HttpClient抓取话费详单等信息

    由于项目需要,需要获取授权用户的在运营商(中国移动.中国联通.中国电信)那里的个人信息.话费详单.月汇总账单信息(需要指出的是电信用户的个人信息无法从网上营业厅获取).抓取用户信息肯定是要模仿用户登录 ...

  2. C# 根据年、月、周、星期获得日期等

    原文:C# 根据年.月.周.星期获得日期等 /// 取得某月的第一天 /// </summary> /// <param name="datetime">要 ...

  3. UVA-11134-Fabled Rooks (结构排序+贪婪)

    这个问题更像八皇后问题,但在位置在大选前必须进行排序,让左侧的优选位置,我没想到这死脑筋! 行,这个问题是不是代码贴. 版权声明:本文博客原创文章.博客,未经同意,不得转载.

  4. 利用servlet产生随机数,原理是获取Graphics对象进行绘图

    public class ResonpeRandomImgDemo extends HttpServlet { int width=100; int height=30; public void do ...

  5. java中dao层的通用层,通过反射机制,操作数据库的增删改,适用的范围是不包含属性类

    这里首先必须注意的是:类的类名.字段必须与数据库中的表名和字段名保持一致,否则无法通过反射机制作出通用层 /** * 学生信息类,数据库中的StuInfo表 * */public class StuI ...

  6. 持续集成 windows下jenkins常见问题填坑

    [过程改进]持续集成 windows下jenkins常见问题填坑 没有什么高深的东西,1 2天的时间大多数人都能自己摸索出来,这里将自己遇到过的问题分享出来避免其他同学再一次挖坑. 目录 1. 主从节 ...

  7. iOS基础 - 触摸事件与手势识别

    一.iOS的输入事件 UIKit可识别三种类型的输入事件: 触摸事件 运动(加速计)事件 远程控制事件 二.UIEvent iOS中许多事件对象都是UIEvent类的实例,记录事件产生的时刻和类型 U ...

  8. IEnumerable实践应用

    1.集合想要支持foreach方式遍历,需要返回一个迭代器(IEnumerator),foreach会自动调用迭代器的状态迁移(MoveNext().Curent.Reset()) #region A ...

  9. Coursera台大机器学习基础课程1

    Coursera台大机器学习基础课程学习笔记 -- 1 最近在跟台大的这个课程,觉得不错,想把学习笔记发出来跟大家分享下,有错误希望大家指正. 一 机器学习是什么? 感觉和 Tom M. Mitche ...

  10. C语言面试问答5

    12个滑稽的C语言面试问答——<12个有趣的C语言问答>评析(5) 前文链接:http://www.cnblogs.com/pmer/archive/2013/09/17/3327262. ...