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

जब add_months का उपयोग किया जाता है तो oracle में मान्य माह नहीं होता है

कभी भी, कभी भी TO_DATE() का उपयोग न करें किसी ऐसी चीज़ पर जो पहले से ही एक DATE है . इसका कारण यह है कि Oracle को आपकी इच्छाओं का पालन करने के लिए कुछ अंतर्निहित रूपांतरण करने होंगे:

TO_DATE(sysdate, 'mm-yyyy')

वास्तव में

. के रूप में चलाया जाता है

TO_DATE(TO_CHAR(sysdate, '<default nls_date_format parameter>'), 'mm-yyyy')

इसलिए यदि आपका nls_date_format 'mm-yyyy' के अलावा किसी अन्य चीज़ पर सेट है, तो आपको समस्याएँ होने वाली हैं। डिफ़ॉल्ट nls_date_format पैरामीटर 'DD-MON-YY' है, जो आपके द्वारा सेट किए गए मान से कहीं अधिक है।

यदि आप केवल चालू माह की पहली तारीख को जोड़ना चाहते हैं, तो आपको TRUNC() का उपयोग करना चाहिए। , जैसे:

add_months(trunc(sysdate, 'MM'),-12)

यहाँ निहित to_char का प्रमाण है यदि आप किसी ऐसी चीज़ को डेट करना चाहते हैं जो पहले से ही एक तारीख है, जैसा कि ललित द्वारा अनुरोध किया गया है - to_date(sysdate) से जुड़ी एक मूल क्वेरी की निष्पादन योजना:

SQL_ID  3vs3gzyx2gtcn, child number 0
-------------------------------------
select *  from   dual where  to_date(sysdate) < sysdate

Plan hash value: 3752461848

----------------------------------------------------------------------------
| Id  | Operation          | Name | E-Rows |E-Bytes| Cost (%CPU)| E-Time   |
----------------------------------------------------------------------------
|   0 | SELECT STATEMENT   |      |        |       |     2 (100)|          |
|*  1 |  FILTER            |      |        |       |            |          |
|   2 |   TABLE ACCESS FULL| DUAL |      1 |     2 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - filter(TO_DATE(TO_CHAR([email protected]!))<[email protected]!)

आप स्पष्ट रूप से देख सकते हैं TO_CHAR() फ़िल्टर की स्थिति में।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. zxJDBC उपयोग के साथ कॉल टू प्रोसेस में गलत संख्या या तर्क के प्रकार

  2. मैं Oracle REGEXP_REPLACE फ़ंक्शन के भीतर कोष्ठक को हाइफ़न में कैसे बदल सकता हूँ?

  3. Oracle के लिए मुफ्त डेस्कटॉप क्लाइंट?

  4. ओरेकल डेटाबेस अधिसूचना भेजने के लिए / कॉलम में निर्दिष्ट समय तक पहुंचने पर जावा विधि को आमंत्रित करें

  5. पीएल/एसक्यूएल और एसक्यूएल स्क्रिप्ट एक एसक्यूएलफाइल में तरल पदार्थ के साथ?