为了配合2008劳动法,请假系统自动更新的问题,
年资为当前日期的年份与第一次工作时间的年份相减,如果当前日期的月日比第一次工作时间的月日大,就直接相减,否则再减1
国家规定 年资<1年 年假为0
1<=年资<10 年假为40小时
10<=年资<20 年假为80小时
年资>=20 年假为120小时
比如员工A第一次工作时间2003.8.22,当前日期为2008.7.8 则工作年资为4年 年假为40小时 如表列
ID Name Firstwork Nianzi Nianjia
01 A 2003-8-22 4 40
02 B 2007-7-8 1 40
03 C 1998-7-9 9 40
04 D 2007-9-10 0 0
05 E 1997-5-2 11 80
06 F 2008-5-6 0 0
07 G 1999-5-6 9 40要求,我在每年12月31日晚9点更新数据库,将满足年资(当年12.31与firstwork比较)的条件分别加上对应的小时数
比如 0<nianzi<1 nianjia=0
1<=nianzi<10 nianjia=40
nianzi=10 nianjia=((365-days)/365 * 40) + (days/365 * 80) //days为firstwork与firstwork的12月31日至之间的天数
10<nianzi<20 nianjia=80
nianzi=20 nianjia=((365-days)/365 * 80) + (days/365 * 120)
nianzi >20 nianjia=120结果为
ID Name Firstwork Nianzi Nianjia
01 A 2003-8-22 4 40+40
02 B 2007-7-8 1 40+40
03 C 1998-7-9 9 40
04 D 2007-9-10 0 0+40
05 E 1997-5-2 11 80+80
06 F 2008-5-6 0 0+0
07 G 1999-5-6 9 40+(365-239)/365*40 +239/365*80
年资为当前日期的年份与第一次工作时间的年份相减,如果当前日期的月日比第一次工作时间的月日大,就直接相减,否则再减1
国家规定 年资<1年 年假为0
1<=年资<10 年假为40小时
10<=年资<20 年假为80小时
年资>=20 年假为120小时
比如员工A第一次工作时间2003.8.22,当前日期为2008.7.8 则工作年资为4年 年假为40小时 如表列
ID Name Firstwork Nianzi Nianjia
01 A 2003-8-22 4 40
02 B 2007-7-8 1 40
03 C 1998-7-9 9 40
04 D 2007-9-10 0 0
05 E 1997-5-2 11 80
06 F 2008-5-6 0 0
07 G 1999-5-6 9 40要求,我在每年12月31日晚9点更新数据库,将满足年资(当年12.31与firstwork比较)的条件分别加上对应的小时数
比如 0<nianzi<1 nianjia=0
1<=nianzi<10 nianjia=40
nianzi=10 nianjia=((365-days)/365 * 40) + (days/365 * 80) //days为firstwork与firstwork的12月31日至之间的天数
10<nianzi<20 nianjia=80
nianzi=20 nianjia=((365-days)/365 * 80) + (days/365 * 120)
nianzi >20 nianjia=120结果为
ID Name Firstwork Nianzi Nianjia
01 A 2003-8-22 4 40+40
02 B 2007-7-8 1 40+40
03 C 1998-7-9 9 40
04 D 2007-9-10 0 0+40
05 E 1997-5-2 11 80+80
06 F 2008-5-6 0 0+0
07 G 1999-5-6 9 40+(365-239)/365*40 +239/365*80
case when datediff(yy,firstwork,getdate())<1 then 0
when 1<=datediff(yy,firstwork,getdate())<10 then 40
when 10<=datediff(yy,firstwork,getdate())<20 then 80
when 20<=datediff(yy,firstwork,getdate()) then 120
end as nianjia
from tb