返回日期与小数不同 [英] Return Date Diff as Decimal

查看:0
本文介绍了返回日期与小数不同的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

例如:

如果相差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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆