तुम गलत हो। MONTHS_BETWEEN
date '2017-02-28'
. से समय अवधि का व्यवहार करता है से date '2017-03-28'
. तक ठीक एक महीने के रूप में (दो आसन्न महीनों में एक ही दिन)। इसे डॉक्स में पढ़ा जा सकता है:https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions089.htm
एक तारीख दूसरी से बड़ी होती है, इसलिए आपको एक धनात्मक या ऋणात्मक संख्या (अर्थात शून्य नहीं) प्राप्त होती है, जिसके आधार पर कौन सा पहला है और कौन सा दूसरा पैरामीटर है, और जैसे-जैसे दिन बराबर होंगे, परिणाम एक पूर्णांक होगा। यह आसन्न महीनों के लिए 1 या -1 है।
महीने की गणना वैसे भी एक अजीब चीज है, क्योंकि एक महीना एक निर्धारित समय अवधि नहीं है। ऐसा लगता है कि आपके मन में एक निश्चित परिभाषा है, जो कि MONTHS_BETWEEN
से बिल्कुल अलग है। को परिभाषित। इसमें कुछ भी गलत नहीं है। मैं MONTHS_BETWEEN
से सहमत हूं इस मामले में; 28 फरवरी से 28 मार्च तक "बिल्कुल" एक महीना है। यदि आप अलग नियम चाहते हैं, तो अपना गणित लागू करें :-)