自定义休假报表解决年假有效期问题(Oracle环境)深圳分公司eHR业务部刘奇liuqi@ufida.com.cn1需求概述员工休假是按工龄年计算的,不是自然年,目前发现通过系统标准功能难以实现。就是说如果某位员工是2007年3月1日入职,2009年他能够休假的天数,是从2008年3月1日-2009年4月1日之间算的,4月1日之前他没有可以休的年假,4月1日之后才有本年可以休的年假。而4月1日之前休的是08年的年假。拿这个员工来说,用工龄年计算年假,会出现这种情况,4月份休假的时候,如果上年度的工龄可以延长到4月份休假,4月份休假3天,可能1天是08年的,2天是本年的。那么休假的报表就要区别开。2首先做基础表3基础表结构只需要个人信息与工作信息表连接即可,下面是选择的字段。年假开始:年假结束:实现效果:主要原理:利用开始结束日期同当前日期进行比较。4最终表利用casewhen来判断得出结果即可。5难点分析在Oracle中对日期型的处理比较复杂如年假结束日期:to_char((to_date((to_char(getdate(),'yyyy')||'-'||substring(bd_psnbasdoc.joinsysdate,6,2)||'-'||substring(bd_psnbasdoc.joinsysdate,9,2)),'yyyy-mm-dd')-1),'yyyy-mm-dd')需要做多次类型转换才能达到预期效果。