--用函数实现, 不是最优的,但实现了相关功能
create function dbo.GetDateDiff(@b_date datetime,@e_date datetime)
returns nvarchar(100)
begin
Declare @str Nvarchar(100)
select @str=cast(YearNum as varchar(20))+N'年'+cast(MonthNum as varchar(20))+N'月'+cast(Datediff(dd,dateadd(MM,MonthNum,dateadd(YY,YearNum,@B_date)),@E_date) as varchar(20))+N'日'
from
(
select case when @e_date>dateadd(YY,datediff(yy,@b_date,@e_date),@b_date)
then datediff(yy,@b_date,@e_date) else datediff(yy,@b_date,@e_date)-1 end YearNum
,case when @e_date>dateadd(mm,datediff(mm,@b_date,@e_date),@b_date)
then datediff(mm,@b_date,@e_date)%12 else (datediff(mm,@b_date,@e_date)-1)%12 end MonthNum
) A
return @str
end
select ID, eName, hireDate 入职日期,dbo.GetDateDiff(hireDate,getdate()) 服务日期 from staff
/*
select dbo.GetDateDiff('2007-4-11','2009-5-3')
--返回结果
2年0月22日
*/
相关贴子:
http://topic.youkuaiyun.com/u/20090526/21/29dbb1b6-71c8-46e2-80a5-a4b694462edd.html