成都网站建设设计

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

oracle如何求工作日 oracle 日期 星期

怎么在oracle中,计算出任意日期之间的工作日天数

怎么在oracle中,计算出任意日期之间的工作日天数

创新互联公司,专注为中小企业提供官网建设、营销型网站制作、响应式网站设计、展示型成都网站设计、做网站等服务,帮助中小企业通过网站体现价值、有效益。帮助企业快速建站、解决网站建设与网站营销推广问题。

=NETWORKDAYS(A10,B10),

A10起始日期,B10结束日期,这个只能计算双休.

Oracle计算指定日期内的工作日(不包含周末)

~~~

1、获取当天是礼拜几:selectto_char(sysdate,'d')fromdual;--礼拜天为1,礼拜一为2,类推

2、获取 两个时间段间的 工作日:

select(trunc(end_dt - start_dt) -

((case

WHEN(8- to_number(to_char(start_dt,'D'))) trunc(end_dt - start_dt) +1THEN0

ELSE

      trunc((trunc(end_dt - start_dt) -

(8- to_number(to_char(start_dt,'D'))))/7) +1END) +

(case

WHENmod(8- to_char(start_dt,'D'),7) trunc(end_dt - start_dt) -1THEN0

ELSE

trunc((trunc(end_dt - start_dt) - (mod(8- to_char(start_dt,'D'),7) +1))/7) +1END)))

asworkingdays

fromdual

下面的sql可以直接运行:

select(trunc(to_date('2010-11-11','yyyy-mm-dd') -to_date('2010-11-07','yyyy-mm-dd')) -

((case

WHEN(8- to_number(to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'))) trunc(to_date('2010-11-11','yyyy-mm-dd') -to_date('2010-11-07','yyyy-mm-dd')) +1THEN0

ELSE

trunc((trunc(to_date('2010-11-11','yyyy-mm-dd') -to_date('2010-11-07','yyyy-mm-dd')) -

(8- to_number(to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'))))/7) +1END) +

(case

WHENmod(8- to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'),7) trunc(to_date('2010-11-11','yyyy-mm-dd') -to_date('2010-11-07','yyyy-mm-dd')) -1THEN0

ELSE

trunc((trunc(to_date('2010-11-11','yyyy-mm-dd') -to_date('2010-11-07','yyyy-mm-dd')) - (mod(8- to_char(to_date('2010-11-07','yyyy-mm-dd'),'D'),7) +1))/7) +1END)))

asworkingdays

fromdual

~~~

Oracle sql 查询语句 分别查询工作日和周末数据

select count(id),sum(case when day='星期一' or day='星期二' or day='星期三' or day='星期四' or day='星期五' then 1 else 0 end) 工作日,sum(case when day='星期六' or day='星期日' then 1 else 0 end) 周末 from table

另外:我发现你的表中有重复值啊,这个怎么算,不管么?还是要去重?这张表(我说的是例子)似乎有点问题。

还应该由其他写法,暂时就想起这一种来。

求教各位大侠,oracle数据库中求某个日期后的第N个工作日是哪天。

思路:20个工作日是4个周的工作日 加上4*2个休息日 20+4*2一共是28天,将2012-9-29日之后的28天列出来,查找第20个工作日

关于计算这个28其实没有必要,因为这是最小范围,取任意大于28的范围都可以

select * from

(

with x as (

select trunc(to_date('2012-9-28','yyyy-mm-dd')+level,'dd') +level-1 day ,to_char(to_date('2012-9-28','yyyy-mm-dd')+level,'dy') weekday from dual

connect by level = 28

)select rownum id,x.* from x where weekday not in ('星期六','星期日')

)y where id = 20


名称栏目:oracle如何求工作日 oracle 日期 星期
当前URL:http://chengdu.cdxwcx.cn/article/hieehd.html