oracle怎么去除星期,oracle日期去除时分秒

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中怎么得到日期相减除去周末后的天数

以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语句如何查询两个日期之间除去星期六、星期日之后的天数!!

select count(*) from ( select rownum rnum from all_objects where rownum = to_date('1') - to_date('2')+1 )

where to_char( to_date('2')+rnum-1, 'DAY' ) not in ( '星期六', '星期日' )

1、注意你数据库的NLS_TERRITORY,你可以需要根据这个替换语句中的'星期六', '星期日' 这部分。

2、注意,在我的例子中我使用了all_objects这个视图,你可以使用任意表,但须确认表要有足够的行数,也就是说日期差1年,表至少要有366行,日期差10年,表至少要有3660行。


网站标题:oracle怎么去除星期,oracle日期去除时分秒
本文地址:http://myzitong.com/article/hciidi.html