成都网站建设设计

将想法与焦点和您一起共享

oracle怎么排除周末 oracle判断周末

Oracle有没有工作日函数,剔除春节调假,二不是简单的周末双休的计算?

这个必须没有啊。

创新新互联,凭借10余年的成都做网站、网站制作经验,本着真心·诚心服务的企业理念服务于成都中小企业设计网站有上1000+案例。做网站建设,选创新互联。

你自己创建一个日历表,定义哪天是休息日,哪天是工作日。

然后再做判断。

oracle中怎么得到日期相减除去周末后的天数

以2015年12月1日至2015年12月31日为例。其中周六和周日算周末。

查询除周末以外的天数(oracle中以周日为1,周一为2……周六为7),可用如下语句:

with t as

(select rownum-1 rn from dual connect by rownum=100)

select count(*) from t 

where to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'yyyy-mm-dd') between '2015-12-01' and '2015-12-31' 

and to_char(to_date('2015-12-01','yyyy-mm-dd')+rn,'d') not in (6,7);

查询结果:

查日历可得,2015年12月1日至2015年12月31日期间,周六周日的天数合计8天,31-8=23,与语句所得结果一致。

oracle怎么计算两个日期之间去除周末的天数?

适用于SQL上下文环境

去掉的是周六/7,周日/1两天周末

具体SQL如下、这是避免日期格式本地化的版本

select count(1) from (

select to_char(TO_DATE('2016-12-24','yyyy-MM-dd') - level, 'd') DOW

from dual

connect by level = trunc(TO_DATE('2016-12-24','yyyy-MM-dd') - TO_DATE('2016-11-19','yyyy-MM-dd'))

) where DOW not in (7, 1);

总结:

第一层查询是通过connect by level生成两个日期间的天数行

其中to_char(,'d')DOW字段返回的是周几的对应1~7的数字

第二层查询就是去掉周六周日然后count天数


分享名称:oracle怎么排除周末 oracle判断周末
文章URL:http://chengdu.cdxwcx.cn/article/hjdjpe.html