以下的文章主要向我們介紹的是如何對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