दिनांक का कोई प्रारूप नहीं होता - यह डेटाबेस में आंतरिक रूप से 7-बाइट्स के रूप में संग्रहीत है। (वर्ष, महीने, दिन, घंटे, मिनट और सेकंड का प्रतिनिधित्व करते हुए) और यह तब तक नहीं है जब तक कि आप जिस भी यूजर इंटरफेस का उपयोग कर रहे हैं (यानी एसक्यूएल/प्लस, एसक्यूएल डेवलपर, जावा, आदि) इसे आपको, उपयोगकर्ता और धर्मान्तरित करने की कोशिश करता है यह कुछ ऐसा है जो आपको सार्थक (आमतौर पर एक स्ट्रिंग) मिलेगा कि तारीख का एक प्रारूप है।
अपनी क्वेरी को ठीक करने के लिए आपको केवल सिंगल कोट्स में दिनांक स्ट्रिंग को घेरना होगा और YY
. का उपयोग करना होगा 2-अंकीय वर्ष प्रारूप से मिलान करने के लिए (अन्यथा Oracle मान लेगा कि 17
प्रारूप में YYYY
वर्ष है 0017
और शताब्दी आपकी अपेक्षा के अनुरूप नहीं होगी
):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between TO_DATE('01-APR-17', 'DD-MON-YY')
AND TO_DATE('31-MAR-17', 'DD-MON-YY');
हालांकि, आप दिनांक अक्षर का भी उपयोग कर सकते हैं (और दिनांक प्रारूप मॉडल से मिलान करना छोड़ दें):
select sum(TOTAL_AMOUNT)
from table a
where trn_date between DATE '2017-04-01'
AND DATE '2017-05-31';