sql计算时间差

create function [dbo].[GetYearMonthDayFun](
@begin datetime ,
@end datetime)
returns varchar(50)
as
begin
/*
* 功能:计算两个日期之差      *
* 描述:返回年月日,结果精确到天,参数为getdate()时计算出生信息*
*/
declare @Ageyear int
declare @Agemonth int
declare @Ageday int
set @Ageyear =datediff(year, @begin, @end)-
case when dateadd(year, datediff(year, @begin, @end), @begin)> @end
then 1 else 0 end
set @Agemonth=ltrim(datediff(month, @begin, @end)-
case when dateadd(month,datediff(month, @begin, @end),@begin)> @end
then 1 else 0 end)-12*@Ageyear
if(day(@begin)<day(@end) or day(@begin)=day(@end))
set @Ageday=day(@end)-day(@begin)
else
set @Ageday=datediff(day,(ltrim(year(@end))+'-'
+ltrim(month(dateadd(mm,-1,@end)))+'-'+ltrim(day(@begin))),
(ltrim(year(@end))+'-'+ltrim(month(@end))+'-'+ltrim(day(@end))))
return ltrim(@Ageyear)+'年'+ltrim(@Agemonth)+'月'+ltrim(@Ageday)+'天'
/*
--示例1
select dbo.GetYearMonthDayFun('2008-6-21',getdate())
--示例2
select dbo.GetYearMonthDayFun(crdate,refdate) from sysobjects
--示例3
select dbo.GetYearMonthDayFun(crdate,getdate()) from sysobjects
*/
end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值