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

ORA-01840:चयन का उपयोग करके Oracle सम्मिलित में दिनांक स्वरूप के लिए इनपुट मान पर्याप्त लंबा नहीं है

आप 'एक प्रारूप के साथ' दिनांक सम्मिलित नहीं कर सकते। तिथियों का एक आंतरिक प्रतिनिधित्व होता है, उनके पास हमेशा सभी दिनांक/समय घटक होते हैं और फिर उन्हें प्रदर्शन के लिए स्वरूपित किया जा सकता है, हालांकि आप चाहते हैं।

YYYYMM के रूप में आप जो स्ट्रिंग उत्पन्न कर रहे हैं, उसे सम्मिलित रूप से एक तिथि में परिवर्तित किया जा रहा है, क्योंकि वह लक्ष्य कॉलम का डेटा प्रकार है। वह निहित रूपांतरण आपकी एनएलएस सेटिंग्स का उपयोग कर रहा है, और इससे एनएलएस दिनांक प्रारूप से मेल खाने के लिए लंबे मूल्य की अपेक्षा की जा रही है। आपकी स्ट्रिंग उस निहित प्रारूप से मेल नहीं खाती है, जिसके कारण आपको दिखाई देने वाली त्रुटि हो रही है।

यदि आप केवल वर्ष और महीने में रुचि रखते हैं, तो आप महीने के पहले मध्यरात्रि को स्टोर कर सकते हैं, जिसे आप trunc के साथ प्राप्त कर सकते हैं। :

INSERT INTO CS_LOG(NAME, ID, C_DATE)
Select MAX(ML.NAME), ML.ID, TRUNC(CHK_DATE,'MM')
from D_ID ML,CS_LOG MD
WHERE ML.NAME != MD.NAME and ML.ID != MD.ID
and MD.C_DATE = LAST_DAY(sysdate)
GROUP BY ML.ID,C_DATE;

मैंने अतिरिक्त to_date भी हटा दिया है बुलाना। आपको एएनएसआई जॉइन सिंटैक्स पर भी स्विच करने पर विचार करना चाहिए।

फिर आप c_date को प्रारूपित कर सकते हैं जब आप क्वेरी करते हैं तो प्रदर्शन के लिए YYYYMM के रूप में, यदि आपको इसकी आवश्यकता है, तो 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. एक सम्मिलित कथन से एक मान लौटाएँ

  2. ओरेकल - अपडेट जॉइन - गैर कुंजी-संरक्षित तालिका

  3. एकाधिक कर्सर से ऑरैकल संग्रहीत प्रक्रिया से एकाधिक पंक्तियों को कैसे वापस करें?

  4. Oracle LISTAGG फ़ंक्शन का उपयोग कैसे करें

  5. एक आंतरिक चयन खंड और रोलअप द्वारा समूह के साथ एसक्यूएल आदेश