以下的文章主要向我们介绍的是如何对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时间日期操作的相关内容的介绍,望你能有所收获 。