早上好,我编写了以下查询来获取存储在两个不同表中的日期列 (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] 删除。
我来说两句