日期:2014-05-18  浏览次数:20491 次

关于时间函数,问一个简单的问题!
下面是我的求时间间隔函数,当我改变@time2,出现了我无法解释的错误,具体如下:

SQL code

declare @time1 datetime,@time2 datetime

select @time1='2011-01-01',@time2='2011-12-31'


select rtrim(right(year(@time2-@time1),2)*1)
+'年零'+rtrim(month(@time2-@time1))+'月'
/*
0年零12月,这个对了!
*/
go
declare @time1 datetime,@time2 datetime

select @time1='2011-01-01',@time2='2012-12-31'


select rtrim(right(year(@time2-@time1),2)*1)
+'年零'+rtrim(month(@time2-@time1))+'月'
/*
2年零1月,明显不对!
*/
go
declare @time1 datetime,@time2 datetime

select @time1='2011-01-01',@time2='2013-12-31'


select rtrim(right(year(@time2-@time1),2)*1)
+'年零'+rtrim(month(@time2-@time1))+'月'
/*
3年零1月,也不对
*/


------解决方案--------------------
declare @time1 datetime,@time2 datetime

select @time1='2011-01-01',@time2='2016-01-31'

select rtrim(datediff(year,@time1,@time2))+'年零'+rtrim(datediff(month,@time1,@time2)%12)+'月'