返回日期与小数不同 [英] Return Date Diff as Decimal
本文介绍了返回日期与小数不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试将两个日期之间的年数作为小数返回,精度更高。
例如:
如果相差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))
这篇关于返回日期与小数不同的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文