सबसे अधिक संभावना यह है कि एक भिन्नात्मक दिनांक घटक है जिस पर आप ध्यान नहीं दे रहे हैं। आप अपनी क्वेरी में कॉलम को छोटा करके उस भिन्नात्मक दिनांक घटक को अनदेखा कर सकते हैं:
SELECT section_id, COUNT(student_id) "ENROLLED"
FROM enrollment
WHERE TRUNC(enroll_date) = TO_DATE('2/10/2007', 'MM/DD/YYYY')
GROUP BY section_id
ORDER BY ENROLLED;
मैं मान रहा हूँ कि कॉलम enroll_date
डेटा प्रकार DATE का है।
कुछ स्पष्टीकरण:Oracle दिनांकों को यहां के रूप में संग्रहीत करता है। , यह एक तारीख को संग्रहीत नहीं करता है जैसा कि आप कहते हैं "दिनांक प्रारूप पहले से ही DD-MON-YY है।"। यह केवल वह प्रारूप है जिसमें आप दिनांक देखते हैं, जो आपके सत्र के लिए पैरामीटर NLS_DATE_FORMAT द्वारा निर्धारित किया जाता है।
आइए एक परीक्षण तालिका के साथ एक त्वरित परीक्षण करें। टेबल बनाएं और NLS_DATE_FORMAT फॉर्म माय सेशन चेक करें।
create table DATE_TST
( id NUMBER GENERATED BY DEFAULT ON NULL AS IDENTITY,
test_date DATE
);
INSERT INTO date_tst (test_date) VALUES (SYSDATE);
SELECT value
FROM nls_session_parameters
WHERE parameter = 'NLS_DATE_FORMAT';
DD-MON-YYYY
मैं अपनी तिथियां इस प्रकार देखूंगा।
SELECT * FROM date_tst;
04-OCT-2020
तो मेरे पास आज की तारीख है। ठंडा। अब देखते हैं कि क्या मैं उस तिथि का उपयोग करके क्वेरी कर सकता हूं:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020','DD-MON-YYYY');
no rows.
कोई पंक्तियाँ नहीं दिखाई जाती हैं क्योंकि जिस दिनांक प्रारूप में मुझे अपनी तिथि मिलती है उसमें समय घटक नहीं होता है। DATE में वर्ष, महीना, दिन, घंटा, मिनट और सेकंड होते हैं। प्रारूप में केवल वर्ष, महीना और दिन होता है। यह जांचने के लिए डेटा को क्वेरी करें कि क्या कोई समय घटक है।
SELECT TO_CHAR(test_date,'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
4-OCT-2020 21:12:39
आह यह है... SYSDATE वर्तमान समय से दूसरे तक है। अब उस क्वेरी को अधिक सटीक दिनांक स्वरूप के साथ फिर से आज़माएँ:
SELECT * FROM date_tst WHERE test_date = TO_DATE('04-OCT-2020 21:12:39','DD-MON-YYYY HH24:MI:SS');
04-OCT-2020
और हमारी पंक्ति है। TRUNC कमांड समय घटक को काट देगा:
SELECT TO_CHAR(TRUNC(test_date),'DD-MON-YYYY HH24:MI:SS') FROM date_tst;
04-OCT-2020 00:00:00
तो आप अपनी क्वेरी को आसान बना सकते हैं:
SELECT * FROM date_tst WHERE TRUNC(test_date) = TO_DATE('04-OCT-2020','DD-MON-YYYY');
04-OCT-2020