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

cx_Oracle 'ORA-01843:मान्य माह नहीं' यूनिकोड पैरामीटर के साथ

यह वास्तव में Oracle 10.5.0.2 और 11.2.0.1 में एक बग है।

बग को निम्न के रूप में पुन:प्रस्तुत किया जा सकता है:

सत्र में NLS_TIMESTAMP_FORMAT सेट करें।

यूनिकोड डेटा के साथ कोई भी निहित या स्पष्ट TO_DATE रूपांतरण चलाएं।

यूनिकोड डेटा के साथ अगला निहित या स्पष्ट TO_TIMESTAMP टाइमस्टैम्प प्रारूप के आंतरिक रीसेट को ट्रिगर करेगा।

सभी लगातार TO_TIMESTAMP विफल हो जाएंगे और टाइमस्टैम्प का TO_CHAR अमान्य आउटपुट देगा।

यहाँ व्यवहार का परीक्षण करने के लिए कोड है:

ALTER SESSION SET NLS_TERRITORY = 'AMERICA';
ALTER SESSION SET NLS_DATE_FORMAT = 'YYYY-MM-DD HH24:MI:SS' NLS_TIMESTAMP_FORMAT = 'YYYY-MM-DD HH24:MI:SS.FF';

REM --- WORKS:
SELECT TO_TIMESTAMP('2013-06-24 18:15:10.312') FROM DUAL;

REM --- WORKS:
SELECT TO_DATE('2013-06-24 18:15:10') FROM DUAL;

REM --- WORKS:
SELECT TO_TIMESTAMP('2013-06-24 18:15:10.312') FROM DUAL;

REM --- WORKS:
SELECT TO_TIMESTAMP(x) FROM (SELECT CAST('2013-06-24 18:15:10.312' AS NVARCHAR2(30)) AS X FROM DUAL);

REM --- WORKS:
SELECT TO_DATE(x) FROM (SELECT CAST('2013-06-24 18:15:10' AS NVARCHAR2(30)) AS X FROM DUAL);

REM --- WORKS:
SELECT TO_TIMESTAMP('2013-06-24 18:15:10.312') FROM DUAL;

REM !!! FAILS!
SELECT TO_TIMESTAMP(x) FROM (SELECT CAST('2013-06-24 18:15:10.312' AS NVARCHAR2(30)) AS X FROM DUAL);

REM !!! FAILS!
SELECT TO_TIMESTAMP('2013-06-24 18:15:10.312') FROM DUAL;

REM --- WORKS:
SELECT TO_DATE('2013-06-24 18:15:10') FROM DUAL;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. टॉड 9.5 तालिका में एक्सेल डेटा कैसे आयात करें

  2. ओरेकल क्वेरी में राउनम मुद्दा

  3. ऑरैकल क्वेरी में इनपुट के रूप में स्ट्रिंग मान 1,2 पास करने में असमर्थ

  4. Stroredprocedure निष्पादित करते समय त्रुटि आ रही है

  5. SQL सर्वर के SET NOCOUNT ON के Oracle समतुल्य क्या है?