以下的文章主要向我们介绍的是如何对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年
上月末的日期:
- select last_day(add_months(sysdate, -1)) from dual;
本月的***一秒:
- select trunc(add_months(sysdate,1),'MM') - 1/24/60/60 from dual
本周星期一的日期:
- select trunc(sysdate,'day')+1 from dual
年初至今的天数:
- select ceil(sysdate - trunc(sysdate, 'year')) from dual;
今天是今年的第几周 :
- select to_char(sysdate,'fmww') from dual
今天是本月的第几周:
- SELECT TO_CHAR(SYSDATE,'WW') -
TO_CHAR(TRUNC(SYSDATE,'MM'),'WW')
+ 1 AS "weekOfMon" FROM dual
本月的天数
- SELECT to_char(last_day(SYSDATE),'dd') days FROM dual
今年的天数
- select add_months(trunc(sysdate,'year'), 12)
- trunc(sysdate,'year') from dual
下个星期一的日期
- SELECT Next_day(SYSDATE,'monday') FROM dual
如何用Oracle时间日期操作来计算工作日方法
- create table t(s date,e date);
- alter session set nls_date_format = 'yyyy-mm-dd';
- insert into t values('2003-03-01','2003-03-03');
- insert into t values('2003-03-02','2003-03-03');
- insert into t values('2003-03-07','2003-03-08');
- insert into t values('2003-03-07','2003-03-09');
- insert into t values('2003-03-05','2003-03-07');
- insert into t values('2003-02-01','2003-03-31');
这里假定日期都是不带时间的,否则在所有日期前加trunc即可。
- select s,e,e-s+1 total_days,
- trunc((e-s+1)/7)*5 + length
(replace(substr('01111100111110',
to_char(s,'d'),mod(e-s+1,7)),'0','')) work_days- from t;
- drop table t;v
以上的相关内容就是对Oracle时间日期操作的相关内容的介绍,望你能有所收获。
【编辑推荐】