日期:2014-05-17  浏览次数:20943 次

SQL server 2008 工龄时间计算问题
现在数据表中有一列叫入职时间,格式为:2013-01-11  00:00:00,

现在的问题是想用这个入职时间来计算工龄,想实现以下计算方式:

1、以当年入职的时间计算,到年底满半年以上为条件,当年计算为工龄+1年。
后面年份的按当年时间超半年以上的,计算工龄+1年。
例如:入职时间:2011-05-01,到2011年底满半年以上,工龄算1年,
现在时间2013-05-01,(跨2012年算1年,但2013年未过半年,不能算)工龄算1年。
实际工龄1+1=2年。


请问我想实现这样的计算方式,应该怎样实现?另外工龄显示的话是要数字的,如3年,5年等。


------解决方案--------------------
引用:
现在数据表中有一列叫入职时间,格式为:2013-01-11  00:00:00,

现在的问题是想用这个入职时间来计算工龄,想实现以下计算方式:

1、以当年入职的时间计算,到年底满半年以上为条件,当年计算为工龄+1年。
后面年份的按当年时间超半年以上的,计算工龄+1年。
例如:入职时间:2011-05-01,到2011年底满半年以上,工龄算1年,
现在时间2013-05-01,(跨2012年算1年,但2013年未过半年,不能算)工龄算1年。
实际工龄1+1=2年。


请问我想实现这样的计算方式,应该怎样实现?另外工龄显示的话是要数字的,如3年,5年等。



select (case when MONTH('2011-05-01')<=6 then 1 else 0 end)

+(datediff(yy,'2011-05-01','2013-05-01')-1)

+(case when MONTH('2013-05-01')<=6 then 0 else 1 end)


-----------
2

(1 行受影响)