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

INSERT विवरण पर मान्य माह नहीं है

जब तक आपके पास टेबल पर एक ट्रिगर नहीं है जो एक तिथि या टाइमस्टैम्प कॉलम सेट कर रहा है, जो पूर्ण त्रुटि स्टैक में कुछ संकेत देगा, यह आपके NLS_DATE_LANGUAGE जैसा लगता है अंग्रेजी भाषा के महीने के संक्षिप्त नाम की अपेक्षा नहीं कर रहा है।

आपके पास जो है वह अंग्रेजी में मान्य है:

alter session set nls_timestamp_format = 'RR/MM/DD HH24:MI:SSXFF';
alter session set nls_date_language ='ENGLISH';

select to_timestamp('15-APR-14 01.36.58.803000000 PM',
  'DD-MON-RR HH.MI.SS.FF AM') as my_date
from dual;

MY_DATE                   
---------------------------
14/04/15 13:36:58.803000000 

लेकिन यदि आपके सत्र की डिफ़ॉल्ट तिथि भाषा पोलिश है (आपकी प्रोफ़ाइल से अनुमान लगाते हुए) तो यह यह त्रुटि देगा - त्रुटि संदेश अभी भी अंग्रेजी में:

alter session set nls_date_language ='POLISH';

select to_timestamp('15-APR-14 01.36.58.803000000 PM',
  'DD-MON-RR HH.MI.SS.FF AM') as my_date
from dual;

SQL Error: ORA-01843: not a valid month
01843. 00000 -  "not a valid month"

यदि आप अपना सत्र अंग्रेजी पर सेट नहीं करना चाहते हैं तो आप to_timestamp() को वैकल्पिक तीसरा पैरामीटर देकर किसी विशिष्ट कथन के लिए इसे ओवरराइड कर सकते हैं :

alter session set nls_date_language ='POLISH';

select to_timestamp('15-APR-14 01.36.58.803000000 PM',
  'DD-MON-RR HH.MI.SS.FF AM',
  'NLS_DATE_LANGUAGE=ENGLISH') as my_date
from dual;

MY_DATE                   
---------------------------
14/04/15 13:36:58.803000000 

आप महीने के नामों के बजाय महीने के नंबरों का उपयोग करके या एएनएसआई टाइमस्टैम्प शाब्दिक सिंटैक्स का उपयोग करके भी पूरी तरह से समस्या से बच सकते हैं:

select timestamp '2014-04-15 13:36:58.803' from dual;

TIMESTAMP'2014-04-1513:36:58.803'
---------------------------------
14/04/15 13:36:58.803000000       

ये विधियाँ सभी दिनांक स्तंभों के लिए भी कार्य करती हैं; to_date() फ़ंक्शन उसी तरह NLS सेटिंग से प्रभावित होता है और उसका वैकल्पिक दिनांक भाषा पैरामीटर समान होता है।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. JDBC ResultSet getDate सटीकता खो रहा है

  2. ORA-00904 अमान्य पहचानकर्ता" खंड द्वारा समूह में एक पहचानकर्ता के लिए

  3. SQL त्रुटि ORA-01722:अमान्य संख्या

  4. Oracle में दोहरी तालिका क्या है?

  5. प्राथमिक कुंजी के लिए Oracle के SYS_GUID () का उपयोग करने के लिए हाइबरनेट को कॉन्फ़िगर करें