返回日期与小数不同小数、不同、日期

2023-09-03 09:04:53 作者:--戴着耳机听世界

我正在尝试将两个日期之间的年数作为小数返回,精度更高。

例如:

用0.1.2这三个数字和小数点组成不同的两位小数.并把组成的数按从大到小的顺序排在下表中. 题目和参考答案 青夏教育精英家教网

如果相差1年零1个月零15天,我希望 返回值为1.15或类似的值。最终,在这个 例如,我想说明的是1年零1个月零15天 以十进制形式显示的差异。

我能够获得要返回的小数值,但我不确定如何正确显示小数点后的第10位和第100位。我肯定我需要做一些数学运算才能正确地显示出来。目前,我的代码只在小数位右侧返回零。

select 
     *,
     cast((cast(begin_date as date) - cast(end_date as date) YEAR) as decimal (3,2)) AS year_diff
from 
     x
同样,预期结果将是介于相隔1年、1个月和15天的两个值之间的值1.15。目前我只返回1.00。

推荐答案

您当前的选择返回不含小数部分的年份。

在Teradata中,减去两个日期将返回两个日期之间的天数,因为每四年是一个闰年,这将返回一个近似结果:

cast((end_date - begin_date) / 365.25 as dec(6,2)) -- 1.13

这通常比使用MONTER_BETWING要好,后者遵循一些奇怪的Oracle逻辑:-)

cast(months_between(end_date, begin_date)/12 as dec(6,2))