Anda salah. MONTHS_BETWEEN
memperlakukan rentang waktu dari date '2017-02-28'
sampai date '2017-03-28'
tepat satu bulan (hari yang sama dalam dua bulan yang berdekatan). Ini dapat dibaca di dokumen:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
Satu tanggal lebih besar dari yang lain sehingga Anda mendapatkan angka positif atau negatif (yaitu bukan nol) tergantung pada mana yang pertama dan mana yang merupakan parameter kedua, dan karena hari sama, hasilnya akan menjadi bilangan bulat. Itu adalah 1 atau -1 untuk bulan yang berdekatan.
Perhitungan bulan adalah hal yang aneh, karena bulan bukanlah rentang waktu yang ditentukan. Anda tampaknya memiliki definisi tertentu dalam pikiran, yang hanya berbeda dari bagaimana MONTHS_BETWEEN
mendefinisikannya. Tidak ada yang salah tentang itu. Saya setuju dengan MONTHS_BETWEEN
pada kasus ini; dari 28 Februari hingga 28 Maret adalah "tepatnya" satu bulan. Jika Anda menginginkan aturan yang berbeda, maka terapkan matematika Anda sendiri :-)