Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

MONTHS_BETWEEN () Oracle में फ़ंक्शन

Oracle डेटाबेस में, MONTHS_BETWEEN() फ़ंक्शन दो तिथियों के बीच महीनों की संख्या देता है।

सिंटैक्स

वाक्य रचना इस प्रकार है:

MONTHS_BETWEEN(date1, date2)

उदाहरण

यहां एक उदाहरण दिया गया है:

SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-10')
FROM DUAL;

परिणाम:

4

इस मामले में दोनों तिथियों के बीच ठीक चार महीने हैं।

महीने का महीना और आखिरी दिन सत्र पैरामीटर NLS_CALENDAR द्वारा परिभाषित किया गया है . यह पता लगाने के लिए कि आपका सत्र किस कैलेंडर का उपयोग कर रहा है, एनएलएस पैरामीटर्स के मूल्यों की जांच कैसे करें देखें। मेरा ग्रेगोरियन कैलेंडर का उपयोग कर रहा है।

आंशिक महीने

समारोह भिन्नात्मक महीनों के लिए अनुमति देता है। यदि दो तिथियों में अलग-अलग दिन के हिस्से शामिल हैं, तो Oracle डेटाबेस उपयोग करने के लिए लागू भिन्नात्मक घटक को तैयार करता है।

उदाहरण:

SELECT MONTHS_BETWEEN(DATE '2030-06-10', DATE '2030-02-25')
FROM DUAL;

परिणाम:

3.51612903225806451612903225806451612903

नकारात्मक महीने

अगर दूसरी तारीख पहली तारीख के बाद की है, तो एक ऋणात्मक राशि वापस कर दी जाती है:

SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '2030-06-10')
FROM DUAL;

परिणाम:

-4

सीमा से बाहर की तिथियां

शून्य तिथियां और अन्य सीमा से बाहर की तारीखों के परिणामस्वरूप त्रुटि होती है।

उदाहरण:

SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00')
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT MONTHS_BETWEEN(DATE '2030-02-10', DATE '0000-00-00')
FROM DUAL
Error at Command Line : 1 Column : 47
Error report -
SQL Error: ORA-01841: (full) year must be between -4713 and +9999, and not be 0
01841. 00000 -  "(full) year must be between -4713 and +9999, and not be 0"
*Cause:    Illegal year entered
*Action:   Input year in the specified range

जैसा कि त्रुटि संदेश बताता है, (पूर्ण) वर्ष -4713 . के बीच होना चाहिए और +9999 , और 0 . नहीं होना चाहिए ।

किसी तारीख की मौजूदा तारीख से तुलना करना

हम SYSDATE . पास कर सकते हैं वर्तमान तिथि के साथ किसी तिथि की तुलना करने के लिए डेटाटाइम तर्क के रूप में:

SELECT 
    SYSDATE,
    MONTHS_BETWEEN(SYSDATE, DATE '2030-03-01')
FROM DUAL;

परिणाम:

     SYSDATE     MONTHS_BETWEEN(SYSDATE,DATE'2030-03-01') 
____________ ____________________________________________ 
13/AUG/21       -102.587825194145758661887694145758661888

अनुपलब्ध तर्क

कॉलिंग MONTHS_BETWEEN() तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:

SELECT MONTHS_BETWEEN()
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT MONTHS_BETWEEN()
FROM DUAL
Error at Command Line : 1 Column : 8
Error report -
SQL Error: ORA-00909: invalid number of arguments
00909. 00000 -  "invalid number of arguments"
*Cause:    
*Action:

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. किसी तिथि से सप्ताह के दिन का नाम कैसे प्राप्त करें?

  2. ओरेकल में पीएल/एसक्यूएल से आउटपुट फ्लश करने का कोई तरीका है?

  3. JSON_VALUE () Oracle में फ़ंक्शन

  4. Oracle विभाजित तालिका

  5. cx_Oracle:मैं प्रत्येक पंक्ति को एक शब्दकोश के रूप में कैसे प्राप्त कर सकता हूं?