用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时间日期操作的相关内容的介绍,望你能有所收获。

【编辑推荐】

  1. Oracle培训课程的特色的相关介绍
  2. Oracle命令与相关函数的整理
  3. Oracle时间与日期的相关操作实例
  4. 对Oracle 数据类型的全新认识
  5. Oracle函数将字符串装换为小写的格式

 

THE END