2009-09-07 9 views
22

से मेल नहीं खाता:ORA-01,861: शाब्दिक जब मैं इस स्निपेट पर अमल करने की कोशिश प्रारूप स्ट्रिंग

cmd.CommandText = "SELECT alarm_id,definition_description,element_id, 
    TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS'),severity, 
    problem_text,status FROM aircom.alarms 
    WHERE status = 1 and 
    TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008 
    09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
    order 
    by ALARM_DATETIME desc"; 

मैं:

ORA-01861: literal does not match format string 

डेटाबेस कनेक्शन के साथ कोई समस्या नहीं है क्योंकि मैं बुनियादी निष्पादित कर सकते हैं नहीं है एसक्यूएल कमांड

इस कथन के साथ समस्या क्या है?

+0

एसक्यूएल प्लस का उपयोग करके इस कथन को चलाने का प्रयास करें ताकि यह देखने के लिए कि इसे क्या कहना है। यदि SQLPlus इसे निष्पादित कर सकता है, तो ado.net को कोई समस्या नहीं होनी चाहिए। – shahkalpesh

उत्तर

25

कहां खंड

TO_DATE (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') 

में TO_DATE निकालें और

alarm_datetime 

त्रुटि एक तारीख स्तंभ के TO_DATE रूपांतरण से आता है करने के लिए कोड बदल जाते हैं।

जोड़ा गया स्पष्टीकरण: ओरेकल अपने एनएलएस निर्भर तिथि प्रारूप का उपयोग करके अपने अलार्म_डेटाइम को एक स्ट्रिंग में परिवर्तित करता है। इसके बाद यह आपके प्रदत्त दिनांक मास्क के साथ to_date को कॉल करता है। यह अपवाद फेंकता है।

7

त्रुटि का अर्थ है कि आपने प्रारूप स्ट्रिंग के साथ एक शाब्दिक प्रवेश करने का प्रयास किया है, लेकिन प्रारूप स्ट्रिंग की लंबाई शाब्दिक के समान लंबाई नहीं थी।

इन स्वरूपों में से एक गलत है:

TO_CHAR(t.alarm_datetime, 'YYYY-MM-DD HH24:MI:SS') 
TO_DATE(alarm_datetime, 'DD.MM.YYYY HH24:MI:SS') 
+1

एक उत्तर क्या है जहां आपने एक उदाहरण दिया और कहा कि इसका आधा गलत है? – PunchyRascal

0
SELECT alarm_id 
,definition_description 
,element_id 
,TO_CHAR (alarm_datetime, 'YYYY-MM-DD HH24:MI:SS') 
,severity 
, problem_text 
,status 
FROM aircom.alarms 
WHERE status = 1 
    AND TO_char (alarm_datetime,'DD.MM.YYYY HH24:MI:SS') > TO_DATE ('07.09.2008 09:43:00', 'DD.MM.YYYY HH24:MI:SS') 
ORDER BY ALARM_DATETIME DESC 
0

से ठीक पहले क्वेरी को निष्पादित: बदलने सत्र सेट NLS_DATE_FORMAT = "DD.MM.YYYY HH24: एमआई: एस एस"; या जो भी प्रारूप आप दिनांक समारोह को जानकारी दे रहे हैं। यह ओआरए त्रुटि

+0

कोड कभी भी NLS_DATE_FORMAT पर निर्भर नहीं होना चाहिए। यह पैरामीटर डेटा प्रदर्शित करने के तरीके को कॉन्फ़िगर करने के लिए उपयोगी है, लेकिन इसे प्रसंस्करण के लिए उपयोग नहीं किया जाना चाहिए। –