Je hebt ongelijk. MONTHS_BETWEEN
behandelt de tijdspanne vanaf date '2017-02-28'
tot date '2017-03-28'
als precies één maand (dezelfde dag in twee aangrenzende maanden). Dit is te lezen in de docs:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
De ene datum is groter dan de andere, dus je krijgt een positief of negatief getal (d.w.z. niet nul), afhankelijk van welke de eerste en de tweede parameter is, en aangezien de dagen gelijk zijn, is het resultaat een geheel getal. Dat is 1 of -1 voor aangrenzende maanden.
Maandberekening is sowieso vreemd, aangezien een maand geen gedefinieerde tijdspanne is. Je lijkt een bepaalde definitie in gedachten te hebben, die gewoon anders is dan hoe MONTHS_BETWEEN
definieert het. Daar is niets mis mee. Ik ben het eens met MONTHS_BETWEEN
in dit geval; van 28 februari tot 28 maart is "precies" een maand. Als je andere regels wilt, pas dan je eigen wiskunde toe :-)