Du har fel. MONTHS_BETWEEN
behandlar tidsspannet från date '2017-02-28'
till date '2017-03-28'
som exakt en månad (samma dag i två angränsande månader). Detta kan läsas i dokumenten:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
Ett datum är större än det andra så du får ett positivt eller negativt tal (dvs inte noll) beroende på vilken som är första och vilken som är andra parametern, och eftersom dagarna är lika blir resultatet ett heltal. Det är 1 eller -1 för angränsande månader.
Månadsberäkning är ändå en märklig sak, då en månad inte är ett definierat tidsintervall. Du verkar ha en viss definition i åtanke, som helt enkelt skiljer sig från hur MONTHS_BETWEEN
definierar det. Inget fel med det. Jag håller med MONTHS_BETWEEN
I detta fall; från 28 februari till 28 mars är "exakt" en månad. Om du vill ha andra regler, använd då din egen matematik :-)