SQL 计算两个日期相差的年月日函数


USE [SZ_NDJZDH]
GO
CREATE FUNCTION getDateDiff
(
      
      @DateFR DATETIME,
      @DateTO DateTime
)
RETURNS  Varchar(100)

AS 
BEGIN
DECLARE @tmp Varchar(100)
DECLARE @tmp1 Varchar(100)
DECLARE @tmp2 Varchar(100)
select @tmp=Ta.day,@tmp1=Ta.month,@tmp2=Ta.YEAR from ( select case when day(@DateTO)-day(@DateFR)<0 then 
         (case when month(@DateTO)-1=1 or month(@DateTO)-1=3 or month(@DateTO)-1=5 or month(@DateTO)-1=7 or month(@DateTO)-1=8 or month(@DateTO)-1=10 or month(@DateTO)-1=12
              then 31+day(@DateTO)-day(@DateFR)
              when month(@DateTO)-1=2 and YEAR(@DateTO)%4=0 then 29+day(@DateTO)-day(@DateFR)
              when month(@DateTO)-1=2 and YEAR(@DateTO)%4<>0 then 28+day(@DateTO)-day(@DateFR)
              else 30+day(@DateTO)-day(@DateFR) end)
            else day(@DateTO)-day(@DateFR) end AS day,  --日
            
        case when day(@DateTO)-day(@DateFR)<0 then 
          (case when  ltrim(datediff(mm,@DateFR,@DateTO)%12)=0 then 12 else ltrim(datediff(mm,@DateFR,@DateTO)%12) end)-1
            else ltrim(datediff(mm,@DateFR,@DateTO)%12) END AS month ,  --月   
            
            
        case when day(@DateTO)-day(@DateFR)<0 then 
          (case when ltrim(datediff(yy,@DateFR,@DateTO))=0 then 1 else ltrim(datediff(yy,@DateFR,@DateTO)) end)-1
            else ltrim(datediff(yy,@DateFR,@DateTO)) end AS year --年
            ) Ta
            
            
            RETURN @tmp2+'年'+ @tmp1+'月'+@tmp+'日'
            END
            
--SELECT dbo.getDateDiff('1991-12-20',GETDATE())

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值