用Oracle时间日期操作来计算工作日的具体方法


  本文标签:Oracle时间日期操作

  以下的文章主要向我们介绍的是如何对Oracle时间日期的操作,以及如何用Oracle时间日期操作来计算工作日的方法的集体描述,以下是文章的具体介绍,望你浏览完以下的内容会有所收获  。

  Oracle时间日期操作

  sysdate+(5/24/60/60) 在系统时间基础上延迟5秒

  

  sysdate+5/24/60 在系统时间基础上延迟5分钟

  

  sysdate+5/24 在系统时间基础上延迟5小时

  

  sysdate+5 在系统时间基础上延迟5天

  

  add_months(sysdate,-5) 在系统时间基础上延迟5月

  

  add_months(sysdate,-5*12) 在系统时间基础上延迟5年

  

  

  上月末的日期:

  1. select last_day(add_months(sysdate, -1)) from dual; 

  

  本月的最后一秒:

  1. select trunc(add_months(sysdate,1),MM) - 1/24/60/60 from dual 

  

  本周星期一的日期:

  1. select trunc(sysdate,day)+1 from dual 

  

  

  年初至今的天数:

  1. select ceil(sysdate - trunc(sysdate, year)) from dual; 

  

  今天是今年的第几周 :

  1. select to_char(sysdate,fmww) from dual 

  今天是本月的第几周:

  1. SELECT TO_CHAR(SYSDATE,WW) - 
    TO_CHAR(TRUNC(SYSDATE,MM),WW) 
    + 1 AS "weekOfMon" FROM dual 

  

  本月的天数

  

  1. SELECT to_char(last_day(SYSDATE),dd) days FROM dual 

  

  今年的天数

  

  

  1. select add_months(trunc(sysdate,year), 12)
     - trunc(sysdate,year) from dual 

  

  下个星期一的日期

  

  

  1. SELECT Next_day(SYSDATE,monday) FROM dual 

  

  

  

  如何用Oracle时间日期操作来计算工作日方法

  

  1. create table t(s date,e date);  
  2. alter session set nls_date_format = yyyy-mm-dd;  
  3. insert into t values(2003-03-01,2003-03-03);  
  4. insert into t values(2003-03-02,2003-03-03);  
  5. insert into t values(2003-03-07,2003-03-08);  
  6. insert into t values(2003-03-07,2003-03-09);  
  7. insert into t values(2003-03-05,2003-03-07);  
  8. insert into t values(2003-02-01,2003-03-31);  

  

  

  这里假定日期都是不带时间的,否则在所有日期前加trunc即可  。

  

  1. select s,e,e-s+1 total_days,  
  2. trunc((e-s+1)/7)*5 + length
    (replace(substr(01111100111110,
    to_char(s,d),mod(e-s+1,7)),0,)) work_days  
  3. from t;  
  4. drop table t;v  

  

  以上的相关内容就是对Oracle时间日期操作的相关内容的介绍,望你能有所收获  。