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