请教各位高手一个问题:如何计算某个月的第几个工作日是几号呢?
比如:我要得到2月份的第8个工作日是什么日期,应该如何实现呢?另外,这个是不考虑holiday的情况,如果考虑holiday的话,比如,2月14号我把它记入holiday,不能算作是工作日,这样的话又应该如何实现呢?多谢各位高手拉~
比如:我要得到2月份的第8个工作日是什么日期,应该如何实现呢?另外,这个是不考虑holiday的情况,如果考虑holiday的话,比如,2月14号我把它记入holiday,不能算作是工作日,这样的话又应该如何实现呢?多谢各位高手拉~
解决方案 »
- 有具体的日期,如何转换成能根据月份分类汇总
- about tablespace 控制
- 我想做个能用到数据库的软件!大家给个意见
- VB.NET下如何访问ORACLE数据库
- 问两个初级问题,望大家赐教
- 几个相关表的连接查询 ,看懂的话你的sql水平可以给80分了
- 在存储过程查询出多条记录,然后在前端程序分别显示出记录来,你们是怎样做的啊?
- 哪位大侠有Linux下安装9i的经验?
- 急难存储过程,请版主beckhambobo和各位高手来指点!小弟先谢了!!!
- 请问developer/2000是什么工具
- a表group by 分组 查询之后 返回 的值 于 b表 进行联合查询 ,应该如何实现?
- 存储过程的问题,请高手帮下忙,先谢过了
现算出这个月份的第一天是周几 这个可以通过如下
select to_char(d, 'D') into v_day from dual; -- d为DATE型数据,可以通过字符串格式化 年月||'01',再格式化成d比如算出来to_number(v_day)是1表示是周日,则记为0,如果是7表示周六,则记为1,其他记为-1
这个记值表示为n
则平时的第八个工作日就是 8/5取整*7 + 8/5取余 + n,即 d + 7 + 3 + 0 = d+10
而d+10 表示就是那天,检查那天是否大于本月月末即 last_day(d)
如果还在本月返回 就是10+1 即11号如果有节假日,则看d+10这天和节假日比大小,如果节假日大则不考虑,原路返回
否则(小于等于),延至下一工作日即d+10递增1, d+11日,直至该日不在节假日和周六周日内
具体函数就不写了