Du tager fejl. MONTHS_BETWEEN
behandler tidsrummet fra date '2017-02-28'
til date '2017-03-28'
som præcis en måned (samme dag i to tilstødende måneder). Dette kan læses i dokumenterne:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
Den ene dato er større end den anden, så du får et positivt eller negativt tal (dvs. ikke nul) afhængigt af, hvilken der er første og hvilken der er anden parameter, og da dagene er ens, vil resultatet være et heltal. Det er 1 eller -1 for tilstødende måneder.
Månedsberegning er alligevel en mærkelig ting, da en måned ikke er et defineret tidsrum. Du ser ud til at have en bestemt definition i tankerne, som simpelthen er forskellig fra MONTHS_BETWEEN
definerer det. Der er ikke noget galt med det. Jeg er enig med MONTHS_BETWEEN
I dette tilfælde; fra 28. februar til 28. marts er "præcis" en måned. Hvis du vil have andre regler, så anvend din egen matematik :-)