Oracle计算指定日期内的工作日(不包含周末)
2014-06-25 10:40
357 查看
1、获取当天是礼拜几:select to_char(sysdate,'d') from dual; --礼拜天为1,礼拜一为2,类推 2、获取 两个时间段间的 工作日: select (trunc(&end_dt - &start_dt) - ((case WHEN (8 - to_number(to_char(&start_dt,'D'))) > trunc(&end_dt - &start_dt) + 1 THEN 0 ELSE trunc((trunc(&end_dt - &start_dt) - (8 - to_number(to_char(&start_dt,'D'))))/7) + 1 END) + (case WHEN mod(8 - to_char(&start_dt, 'D'), 7) > trunc(&end_dt - &start_dt) - 1 THEN 0 ELSE trunc((trunc(&end_dt - &start_dt) - (mod(8 - to_char(&start_dt,'D'),7) + 1))/7) + 1 END))) as workingdays from dual 下面的sql可以直接运行: select (trunc(to_date('2010-11-11','yyyy-mm-dd') - to_date('2010-11-07','yyyy-mm-dd')) - ((case WHEN (8 - to_number(to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'))) > trunc(to_date('2010-11-11','yyyy-mm-dd') - to_date('2010-11-07','yyyy-mm-dd')) + 1 THEN 0 ELSE trunc((trunc(to_date('2010-11-11','yyyy-mm-dd') - to_date('2010-11-07','yyyy-mm-dd')) - (8 - to_number(to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'))))/7) + 1 END) + (case WHEN mod(8 - to_char(to_date('2010-11-07','yyyy-mm-dd'), 'D'), 7) > trunc(to_date('2010-11-11','yyyy-mm-dd') - to_date('2010-11-07','yyyy-mm-dd')) - 1 THEN 0 ELSE trunc((trunc(to_date('2010-11-11','yyyy-mm-dd') - to_date('2010-11-07','yyyy-mm-dd')) - (mod(8 - to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'),7) + 1))/7) + 1 END))) as workingdays from dual
相关文章推荐
- JS获取两个日期工作日相差的小时数(不包含周末)----可以指定一天的上班时间
- oracle计算一个日期加上指定工作日(排除周六周日和一系列节假日)时间
- oracle计算一个日期加上指定工作日(排除周六周日和一系列节假日)时间
- PHP计算指定时间段内周末天数(星期日天数)、双休天数、总工作日天数
- 计算两个日期之间的工作日(去掉周末和节假日)
- Javascript中指定周末日期的计算
- 用VBA计算两个日期之间的工作日(去掉周末两天)
- 根据指定两个日期计算出这些时间内有多少天是周末 php程序函数代码
- 强大的PLSQL - 计算两个日期之间的工作日天数-除去(周末和公共假日
- java计算两个日期之前的天数(工作日),排除节假日和周末
- 计算两个日期之间的工作日(去掉周末和节假日)
- 计算指定工作日后的日期
- PHP计算指定时间段内周末天数(星期日天数)、双休天数、总工作日天数
- 根据指定两个日期计算出这些时间内有多少天是周末 php程序函数代码
- oracle 查询指定日期到现在的日期包含的天
- [DB][ORACLE]取得指定月份的最后一天、在当前日期的基础上加/减月份
- 在T-SQL 确定日期是否是工作日或周末 mssql
- 计算任意2个日期内的工作日
- 计算指定日期的时间间隔
- 根据日期算出加减指定工作日数后的日期