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

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

Oracle डाटाबेस में, ADD_MONTHS() फ़ंक्शन किसी तारीख में दिए गए महीनों की संख्या जोड़ता है, और परिणाम देता है।

सिंटैक्स

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

ADD_MONTHS(date, integer)

जहां date एक डेटाटाइम मान या कोई भी मान हो सकता है जिसे परोक्ष रूप से DATE . में परिवर्तित किया जा सकता है .

integer तर्क एक पूर्णांक या कोई भी मान हो सकता है जिसे परोक्ष रूप से एक पूर्णांक में परिवर्तित किया जा सकता है।

वापसी प्रकार हमेशा होता है DATE , date . के डेटा प्रकार की परवाह किए बिना

उदाहरण

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

SELECT ADD_MONTHS(DATE '2020-01-01', 3)
FROM DUAL;

परिणाम:

01/APR/20

यह उदाहरण मेरे सिस्टम के NLS_DATE_FORMAT के मान के आधार पर दिनांक प्रदर्शित करता है पैरामीटर (जो वर्तमान में DD/MON/RR है) ) हम या तो इस पैरामीटर को बदल सकते हैं, या TO_CHAR() . जैसे फ़ंक्शन का उपयोग कर सकते हैं परिणाम को एक अलग प्रारूप में वापस करने के लिए।

उदाहरण:

SELECT TO_CHAR(ADD_MONTHS(DATE '2020-01-01', 3), 'YYYY-MM-DD')
FROM DUAL;

परिणाम:

2020-04-01

महीने घटाएं

किसी तिथि से महीनों को घटाने के लिए, दूसरे तर्क के लिए ऋणात्मक मान का उपयोग करें।

उदाहरण:

SELECT ADD_MONTHS(DATE '2020-01-01', -3)
FROM DUAL;

परिणाम:

01/OCT/19

विभिन्न दिनांक प्रारूपों को पास करना

दिनांक को विभिन्न स्वरूपों में प्रदान किया जा सकता है, जब तक कि यह किसी दिनांक तक हल हो जाता है:

SELECT ADD_MONTHS('01 Jan 2020', 3)
FROM DUAL;

परिणाम:

01/APR/20

लेकिन जिसे हल नहीं किया जा सकता उसे पास करने से त्रुटि होती है:

SELECT ADD_MONTHS('Jan 01 2020', 3)
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ADD_MONTHS('Jan 01 2020', 3)
FROM DUAL
Error report -
ORA-01858: a non-numeric character was found where a numeric was expected

हालांकि, यह NLS_DATE_FORMAT . के मान पर निर्भर हो सकता है पैरामीटर। अगर हम इस पैरामीटर को बदलते हैं:

ALTER SESSION SET NLS_DATE_FORMAT = "Mon DD RR";
SELECT VALUE
FROM V$NLS_PARAMETERS
WHERE PARAMETER = 'NLS_DATE_FORMAT';

परिणाम:

       VALUE 
____________ 
Mon DD RR   

और फिर क्वेरी को फिर से चलाएँ:

SELECT ADD_MONTHS('Jan 01 2020', 3)
FROM DUAL;

परिणाम:

Apr 01 20

हमें अब त्रुटि नहीं मिलती है।

अशक्त तर्क

null . की तारीख पास करना रिटर्न null :

SET NULL 'null';
SELECT ADD_MONTHS(null, 1)
FROM DUAL;

परिणाम:

null

लेकिन दूसरे तर्क के लिए शून्य पास करने से त्रुटि होती है:

SELECT ADD_MONTHS('2020-01-01', null)
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ADD_MONTHS('2020-01-01', null)
FROM DUAL
Error report -
ORA-01843: not a valid month

ध्यान दें कि डिफ़ॉल्ट रूप से, SQLcl और SQL*Plus जब भी null . खाली स्थान लौटाते हैं SQL SELECT . के परिणामस्वरूप होता है बयान।

हालांकि, आप SET NULL . का उपयोग कर सकते हैं वापस करने के लिए एक अलग स्ट्रिंग निर्दिष्ट करने के लिए। ऊपर के उदाहरण में, मैंने निर्दिष्ट किया है कि स्ट्रिंग null वापस किया जाना चाहिए।

तर्कों की अमान्य संख्या

तर्कों की अमान्य संख्या पास करने से त्रुटि होती है:

SELECT ADD_MONTHS(3)
FROM DUAL;

परिणाम:

Error starting at line : 1 in command -
SELECT ADD_MONTHS(3)
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. Oracle का उपयोग करके वर्षों, महीनों और दिनों में आयु कैसे प्राप्त करें?

  2. TEMPFILE ऑफ़लाइन भौतिक स्टैंडबाय

  3. मैं Oracle Sql डेवलपर में व्याख्या योजना कैसे देख सकता हूँ?

  4. सीबीओ सांख्यिकी श्वेत पत्र

  5. Oracle शटडाउन त्रुटि ORA-01033