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

請教一下各位大哥

A001進廠日期是1995年4月15日,現在是2012年11月6日,
1995年到2012年為17年,4月到11月為6個月.
請問如何用SQL語句算他的在職年月數為17.6

select '2012/11/06'-'1995/4/15'=17.6

上面的語句不知道怎麼寫,麻煩各位了.謝謝.

------最佳解决方案--------------------
null
------其他解决方案--------------------

declare @a date,@b date,@c int
select @a='1995/4/15',@b='2012/11/06'

select @c=datediff(m,@a,@b)
select rtrim(@c/12)+'.'+rtrim(@c%12) '在職年月數'
 
/*
在職年月數
-------------------------
17.7

(1 row(s) affected)
*/

------其他解决方案--------------------
select ROUND(DATEDIFF(MONTH,'1995/4/15','2012/11/06')/12.0,1)

------其他解决方案--------------------
select CONVERT(VARCHAR(10),DATEDIFF(year,CONVERT(DATE,'1995/4/15'),CONVERT(DATE,'2012/11/06')))+'.'+CONVERT(VARCHAR(10),DATEDIFF(mm,CONVERT(DATE,'1995/4/15'),CONVERT(DATE,'2012/11/06'))-DATEDIFF(year,CONVERT(DATE,'1995/4/15'),CONVERT(DATE,'2012/11/06'))*12-1)

------其他解决方案--------------------
declare @begin date,@end date
sset @begin='1995/4/15',@end='2012/11/06'
 
select cast(datediff(year,@begin,@end) as varchar(10))+'.'+cast(datediff(mm,@begin,@end)%12-1 as varchar(10))

/*
-------
17.6
*/

------其他解决方案--------------------
上面的答案挺好的

------其他解决方案--------------------
上面只有#1和#5運行沒問題,其它都是錯誤的.麻煩各位再修正一下,謝謝.
------其他解决方案--------------------
到職日期 在職年數
1995年4月 17.6 
2011年5月 1.4 

5樓的兄弟請問一下,在職年數為1.4怎麼算成1.5呢?上面是正確的結果.
select ROUND(DATEDIFF(MONTH,'1995/4/15','2012/11/06')/12.0,1)  結果是17.6
select ROUND(DATEDIFF(MONTH,'2011/5/25','2012/11/06')/12.0,1)  結果是1.5
麻煩一下,謝謝.