繁体   English   中英

计算两个日期之间的整年和部分月份

[英]Calculate full years and partial months between 2 dates

我想知道如何计算两个日期之间的整年和整月数并将它们合并为一列:

例如:我的开始日期是一个名为“TransferDate”的列 = 7/1/2017 和今天(11/14/2019)我想要的 output 将是一个名为“Age”的列 = 2.3

2 整年(2017 - 2019)。3 整月(8 月、9 月和 10 月)

看看这是否给了你你想要的东西。

Declare @date1 date = '11/01/2001'
Declare @date2 date = '12/01/2002'

Select @date1
    ,@date2
    ,Case 
    when datediff(M,@date1,@date2) < 12 then ''
    when datediff(M,@date1,@date2) < 24  then 'one year'
    else cast(floor(datediff(M,@date1,@date2)/12) as varchar(20)) + ' Years'
    end  +  ' ' +
Case 
    when datediff(M,@date1,@date2) - floor(datediff(M,@date1,@date2)/12)*12 = 0  then ''
    when datediff(M,@date1,@date2) - floor(datediff(M,@date1,@date2)/12)*12 = 1 then 'one month'
    else cast(datediff(M,@date1,@date2) - floor(datediff(M,@date1,@date2)/12)*12 as varchar(20)) + ' Months'
    end

这在将年和月组件计算为月度和年度之后将它们组合到单个列中。

DECLARE @start DATETIME = '07/01/2017'
DECLARE @end DATETIME = '11/14/2019'

select CAST((CAST(x.yeardif as nvarchar(20)) + '.' + CAST(x.monthdif as nvarchar(20))) as decimal(5,2)) from
(select DATEDIFF(yyyy,@start,@end) yeardif,DATEDIFF(m,@start,@end) - (12 * DATEDIFF(yyyy,@start,@end)) - 1 monthdif) x

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM