Вы хотите посчитать количество границ месяца между двумя значениями.Это не то, что делает months_between()
.Вместо этого преобразуйте значения в количество месяцев с некоторого момента времени и возьмите разницу.
Простой способ сделать это с использованием арифметики:
select t.*,
( (extract(year from dt_2) * 12 + extract(month from dt_2)) -
(extract(year from dt_1) * 12 + extract(month from dt_1))
) as month_difference
from t;
В качестве альтернативы, вы можете использовать trunc()
с months_between()
:
select t.*,
months_between(trunc(dt_2, 'MON'), trunc(dt_1, 'MON'))