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

ORA-1843:रिकॉर्ड अपडेट करते समय मान्य माह नहीं

दिनांक का कोई प्रारूप नहीं होता - यह डेटाबेस में आंतरिक रूप से 7-बाइट्स के रूप में संग्रहीत किया जाता है। (वर्ष, महीने, दिन, घंटे, मिनट और सेकंड का प्रतिनिधित्व करते हुए) और यह तब तक नहीं है जब तक कि आप जिस भी यूजर इंटरफेस का उपयोग कर रहे हैं (यानी एसक्यूएल/प्लस, एसक्यूएल डेवलपर, जावा, आदि) इसे आपको, उपयोगकर्ता और धर्मान्तरित करने की कोशिश करता है यह कुछ ऐसा है जो आपको सार्थक (आमतौर पर एक स्ट्रिंग) मिलेगा कि तारीख का एक प्रारूप है।

यदि आप किसी प्रक्रिया के लिए स्वरूपित दिनांक प्रदान कर रहे हैं तो यह एक स्ट्रिंग होगी और Oracle NLS_DATE_FORMAT का उपयोग करके इसे किसी तिथि पर परोक्ष रूप से डालने का प्रयास करेगा। सत्र पैरामीटर:

UPDATE your_table
SET your_date_column = '18-06-14'; -- or equivalently via a bind parameter

परोक्ष रूप से

. में रूपांतरित किया गया है
UPDATE your_table
SET your_date_column = TO_DATE( '18-06-14', 'DD-MM-RR' );

अगर NLS_DATE_FORMAT मेल नहीं खाता है तो Oracle एक अपवाद उठाएगा (और पैरामीटर प्रत्येक उपयोगकर्ता द्वारा सेट किया जा सकता है, इसलिए आपको इसके संगत होने पर भरोसा नहीं करना चाहिए - विशेष रूप से अंतरराष्ट्रीय संगठनों में जब डिफ़ॉल्ट दिनांक प्रारूप आपके क्षेत्र और भाषा पर निर्भर करता है)।

यदि आप मान अपडेट कर रहे हैं तो DATE . का उपयोग करें शाब्दिक और स्ट्रिंग नहीं:

UPDATE your_table
SET your_date_column = DATE '2014-06-18';

या स्पष्ट रूप से स्ट्रिंग को रूपांतरित करें और प्रारूप मॉडल प्रदान करें:

UPDATE your_table
SET your_date_column = TO_DATE( '18-06-14', 'DD-MM-RR' );

आपके फ़ंक्शन में पैरामीटर पास करने के लिए भी यही सच है। या तो DATE का उपयोग करें शाब्दिक:

BEGIN
  your_procedure(
    p_launch_date => DATE '2014-06-18'
  );
END;
/

या स्ट्रिंग को स्पष्ट रूप से एक तिथि में परिवर्तित करें (और निहित रूपांतरण पर भरोसा न करें):

BEGIN
  your_procedure(
    p_launch_date => TO_DATE( '18-06-14', 'DD-MM-RR' )
  );
END;
/



  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 12.2.0.1 2016 में आ रहा है

  2. इस क्वेरी को तत्काल तत्काल चलाने से यह विफल क्यों हो जाता है?

  3. हाइबरनेट अनुक्रम अगलावैल हल हो गया लेकिन उपयोग नहीं किया गया (ओरेकल)

  4. Oracle 12c क्लाइंट इंस्टॉलर त्रुटि

  5. जेपीए का उपयोग करते समय आप तैनाती के समय अनुक्रमों के लिए स्कीमा नाम कैसे सेट करते हैं?