我想根据rpm -i package_name.rpm
函数对数年进行舍入。假设我有两个日期:datediff
和20/07/2015
。获得差异后,我将天数除以365天,将其转换为年。因此,我应该得到38.79726027年,在那里我将会得到39。
但是,我的11/10/1976
脚本似乎没有提供预期的答案。任何人都可以帮我查询?
tqsl
答案 0 :(得分:0)
这样做:
ROUND(ceiling(DATEDIFF(year,[Date of Birth], [Risk_Comm Date])),0)
结果:39.0
和
CAST(ROUND(ceiling(DATEDIFF(year,[Date of Birth], [Risk_Comm Date])),0) as int)
结果:39
但据我所知,DATEDIFF
默认情况下应返回INT
答案 1 :(得分:0)
通过考虑两个竞争者并选择最接近风险日期的竞争者,您可以获得“四舍五入”的年龄。我在这里使用CTE来挑选竞争者,其他选项可能是APPLY
:
declare @t table (DOB datetime not null, RiskDate datetime not null);
insert into @t(DOB,RiskDate) values ('19761011','20150720');
;With Contenders as (
select
DATEDIFF(year,DOB,RiskDate) as Age1,
DATEDIFF(year,DOB,RiskDate)+1 as Age2,
*
from @t
)
select
CASE WHEN
DATEDIFF(day,RiskDate,DATEADD(year,Age2,DOB)) <
DATEDIFF(day,DATEADD(year,Age1,DOB),RiskDate)
THEN Age2
ELSE Age1
END as RoundedAge
from Contenders
通过仔细考虑我将参数放入最终DATEDIFF
调用的顺序,我确保两个表达式都能产生正面结果。
如果它在一个年龄与另一个年龄之间完全分开,则上述产生较低的年龄。如果您希望在这种情况下更高年龄,只需将<
换成<=
。