あなたは間違っている。 MONTHS_BETWEEN
date '2017-02-28'
からの期間を扱います date '2017-03-28'
正確に1か月(隣接する2か月の同じ日)。これはドキュメントで読むことができます: https:// docs .oracle.com / cd / B19306_01 / server.102 / b14200 / features089.htm
一方の日付がもう一方の日付よりも大きいため、どちらが最初でどちらが2番目のパラメーターであるかに応じて、正または負の数(つまり、ゼロではない)が得られ、日が等しい場合、結果は整数になります。隣接する月の場合は1または-1です。
月は定義された期間ではないため、月の計算はとにかく奇妙なことです。あなたは特定の定義を念頭に置いているようですが、それは単にMONTHS_BETWEEN
の方法とは異なります。 それを定義します。それについては何も悪いことはありません。 MONTHS_BETWEEN
に同意します この場合; 2月28日から3月28日までは「正確に」1か月です。別のルールが必要な場合は、独自の計算を適用してください:-)