重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
节假日,每年每节都不相同,而且每年法定节日完全人为设置。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网络空间、营销软件、网站建设、潞城网站维护、网站推广。
既然是人为设置,则可以建了一个节假日库,把当前年的所有节假日维护进去,这没有任何难度。
然后写一个检索函数,专门对你的日期作检索判断,找到了,就是节假日,没有找到即是工作日。
select count( case when to_char(dt,’day’)='星期六' or to_char(dt,’day')='星期日' then 1
else 0 end) as cnt
from
(
select d1+lv-1 dt
from
(
select level lv
from dual
connect by level = trunc(d2 -d1, 0)
) tt
) tm;
自己处理下临界值,这个是两边都取;如果是英文字符集,把星期改称英文,至于什么字符集,用这个判断
select to_char(sysdate, 'day') from dual;
看结果是汉字还是英文。
1、首先可以直接用datepart函数,第一个参数设置成weekday就可以了。
2、得到的结果是这一天是这周的第几天,注意星期日是第一天。
3、可以看到去掉星期日就是日期的星期几了。
4、然后在实际使用的时候就可以直接减去1就可以了。
5、另外datepart第二个参数也可以直接放getdate。
6、最后得到的结果也是需要的日期。
节假日资料表最好是有一个开始时间和结束时间。
程序处理的时候,可以使用trigger,或者直接加判断。判断sql语句类似于下面:
select nvl(max(last_day+1),'1001')
from tb where '1001'between start_day and last_day ;
数据类型根据你的程序自行解决吧。