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

【编辑推荐】

【责任编辑:孙巧华 TEL:(010)68476606】

点赞 0

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐