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

DATEs की Oracle SQL तुलना गलत परिणाम देती है

आप दो STRINGS . की तुलना कर रहे हैं . आपको DATE . की तुलना करने की आवश्यकता है एस। जैसा कि मैंने पहले ही यहां दूसरे उत्तर में कहा है, आपको तारीख छोड़ने की जरूरत है क्योंकि यह DATE की गणना के लिए है। TO_CHAR प्रदर्शन के लिए है, और TO_DATE स्ट्रिंग अक्षर को DATE में बदलना है।

SELECT TO_CHAR(REPORTDATE, 'DD.MM.YYYY'),
  COUNT(*)
FROM TABLE
WHERE REPORTDATE > TO_DATE('09.11.2013', 'DD.MM.YYYY')
GROUP BY TO_CHAR(REPORTDATE, 'DD.MM.YYYY') 

साथ ही, REPORTDATE एक DATE कॉलम है, इसलिए इसमें डेटाटाइम एलिमेंट होगा। इसलिए, यदि आप तुलना करते समय समय तत्व को बाहर करना चाहते हैं, तो आपको TRUNC . का उपयोग करने की आवश्यकता है

WHERE TRUNC(REPORTDATE) > TO_DATE('09.11.2013', 'DD.MM.YYYY')

हालांकि, TRUNC applying लागू करना दिनांक कॉलम . पर किसी भी नियमित अनुक्रमणिका . को दबा देगा उस कॉलम पर। प्रदर्शन की दृष्टि से, दिनांक सीमा शर्त का बेहतर उपयोग करें ।

उदाहरण के लिए,

WHERE REPORTDATE
BETWEEN 
        TO_DATE('09.11.2013', 'DD.MM.YYYY')
AND     
        TO_DATE('09.11.2013', 'DD.MM.YYYY') +1


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle के अंतर्गत NetBeans IDE

  2. Oracle में तालिका चर शैली इकाइयाँ

  3. ORA-00913 त्रुटि जब बहुत सारे IN स्टेटमेंट का उपयोग करते हैं

  4. संदेशों के साथ मज़ा

  5. पीएल/एसक्यूएल:स्पष्ट कर्सर को रेफरी कर्सर में कनवर्ट करें?