Oracle 月份之间无法正常工作

萨尔瓦多·维塔莱

早上好,我编写了以下查询来获取存储在两个不同表中的日期列 (STRT_DT) 和时间戳列 (VLD_FRM_TMS) 之间的月差。我不知道为什么它适用于某些记录但不适用于其他记录(它计算的时间少了一个月)

select ID, floor (months_between (cast(a.VLD_FRM_TMS as date), STRT_DT)) as delta
from TABLE_A a
inner join TABLE_B b
on a.ID = b.ID 

这是计算不起作用的记录示例:

VLD_FRM_TMS
-----------
28-FEB-21 12.00.00.000000000 AM

STRT_DT
--------
29-OCT-20

该公式计算 3 个月而不是 4 个月...

谁能帮我定位问题?先感谢您

亚历克斯·普尔

我实际上想要月份的差异,而不管月份的具体日期如何。

您可以使用format element将这两个值截断为月份的第一个值,然后获取它们之间的差异:'MM'

months_between (trunc(a.VLD_FRM_TMS, 'MM'), trunc(STRT_DT, 'MM')) as delta

现在这将始终是一个整数——即整数个月——所以你不需要对结果进行截断/取整/舍入。

db<>fiddle显示了旧计算和此版本的问题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章