--try:
--创建函数
create function f_wsp(@star datetime,@end datetime)
returns varchar(20)
as
begin
declare @star1 varchar(10),@end1 varchar(10)
declare @cha varchar(20)
set @cha=''
if(@star>=@end)
set @cha='开始日期大于等于结束日期'
else
begin
set @star1=stuff(convert(varchar(10),@star,120),1,4,'1990')
set @end1=stuff(convert(varchar(10),@end,120),1,4,'1990')
if(datediff(dd,@star1,@end1)>0)
begin
set @cha=ltrim(datediff(yy,@star,@end))+'年'
set @star=stuff(convert(varchar(10),@star,120),1,4,datename(yy,@end))
end
else
begin
set @cha=ltrim(datediff(yy,@star,@end)-1)+'年'
set @star=stuff(convert(varchar(10),@star,120),1,4,ltrim(datepart(yy,@end)-1))
end
set @star1=stuff(convert(varchar(10),@star,120),1,7,'1990-01')
set @end1=stuff(convert(varchar(10),@end,120),1,7,'1990-01')
if(datediff(dd,@star1,@end1)>0)
begin
set @cha=@cha+ltrim(datediff(mm,@star,@end))+'月'
set @star=stuff(convert(varchar(10),@star,120),1,7,convert(varchar(7),@end,120))
end
else
begin
set @cha=@cha+ltrim(datediff(mm,@star,@end)-1)+'月'
set @star=stuff(convert(varchar(10),@star,120),1,7,convert(varchar(7),dateadd(mm,-1,@end),120))
end
set @cha=@cha+ltrim(datediff(dd,@star,@end))+'天'
end
return @cha
end
go
--调用函数:
--> 测试数据: @s
declare @s table (日期1 datetime,日期2 datetime)
insert into @s
select '2006-02-03','2008-01-02' union all
select '2006-06-08','2004-03-05' union all
select '2007-05-06','2008-06-07'
select 日期1,日期2,dbo.f_wsp(日期1,日期2) from @s