计算两个日期之间的完整年份和部分月份
Calculate full years and partial months between 2 dates
我想知道如何计算两个日期之间的完整年份和完整月份数,并将它们合并到一列中:
例如:我的开始日期是一个名为 "TransferDate" = 7/1/2017 的列,而今天(11/14/2019)我想要的输出是一个名为 "Age" = [= 的列16=]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
在将年月分量计算为 monthdif 和 yeardif 后,将它们合并到一个列中。
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
我想知道如何计算两个日期之间的完整年份和完整月份数,并将它们合并到一列中:
例如:我的开始日期是一个名为 "TransferDate" = 7/1/2017 的列,而今天(11/14/2019)我想要的输出是一个名为 "Age" = [= 的列16=]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
在将年月分量计算为 monthdif 和 yeardif 后,将它们合并到一个列中。
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