लाइन को देखते हुए:
OD.DATE2 BETWEEN '08/03/2015' AND '08/03/2016'
फिर '08/03/2015'
और '08/03/2016'
स्ट्रिंग अक्षर हैं और तिथियां नहीं हैं।
Oracle आपके NLS_DATE_FORMAT
का उपयोग करके एक स्ट्रिंग अक्षर से एक तिथि में एक अंतर्निहित रूपांतरण का प्रयास करेगा सत्र पैरामीटर प्रारूप मास्क के रूप में और यदि यह काम नहीं करता है तो यह एक त्रुटि देगा।
सरल उपाय यह है कि स्ट्रिंग लिटरल्स का उपयोग न करें बल्कि इसके बजाय डेट लिटरल का उपयोग करें:
SELECT 'M'||to_char( DATE2, 'MM' ) PERIODE,
count(*) DATA,
DCCPT
FROM BDD
WHERE BDD = 'phone'
AND SENS = 'Ent'
AND DCCPT IN ( 'PIOLUC' )
AND DATE2 BETWEEN DATE '2015-03-08' AND DATE '2016-03-08'
GROUP BY
'M'||to_char( DATE2, 'MM' ),
DCCPT
लेकिन आप प्रारूप मुखौटा भी निर्दिष्ट कर सकते हैं:
OD.DATE2 BETWEEN TO_DATE( '08/03/2015', 'DD/MM/YYYY' ) AND TO_DATE( '08/03/2016', 'DD/MM/YYYY' )