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

दो तिथियों का उपयोग कर SQL क्वेरी

'10-MAY-20' एक तारीख नहीं है, यह एक स्ट्रिंग है। किसी दिनांक का कोई प्रारूप नहीं होता, आपकी स्थानीय-विशिष्ट NLS सेटिंग के आधार पर इसे TO_CHAR का उपयोग करके मानव पठनीय प्रारूप में प्रदर्शित किया जाता है और उचित प्रारूप मुखौटा।

साथ ही, आपको दो अंकों के YY . का उपयोग करने से बचना चाहिए वर्ष के लिए प्रतिनिधित्व, यह संपूर्ण कारण है Y2K बग शुरू हो गया। हमेशा YYYY . का उपयोग करें प्रारूप।

स्ट्रिंग को दिनांक में बदलने के लिए:

TO_DATE का उपयोग करें और उपयुक्त प्रारूप मुखौटा:

where  date_col > TO_DATE('10-MAY-2020', 'DD-MON-YYYY')  
and    date_col < TO_DATE('13-MAY-2020', 'DD-MON-YYYY')

या, ANSI date literal use का उपयोग करें जो निश्चित प्रारूप का उपयोग करता है 'YYYY-MM-DD' :

where  date_col > DATE '2020-05-10' and date < DATE '2020-05-13'

एक और बात, DATE एक Oracle आरक्षित शब्द है, आप दस्तावेज . शायद, आप उद्धृत पहचानकर्ता . का उपयोग कर रहे हैं "date" यानी आरक्षित शब्द के चारों ओर दोहरे उद्धरण चिह्नों का उपयोग करना।

ऐसा शायद इसलिए है क्योंकि SQL डेवलपर की आपकी NLS सेटिंग 'DD-MON-YY' पर सेट है , इसलिए जब आप उस प्रारूप में तिथि पास करते हैं तो यह तिथि के लिए एक अंतर्निहित रूपांतरण करता है। हालांकि, अगर आप प्रारूप बदलते हैं तो यह काम नहीं करेगा:

alter session set NLS_DATE_FORMAT = 'YYYY-MM-DD';


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. पुनरावर्ती SQL और विभिन्न स्तरों पर जानकारी

  2. पीएल/एसक्यूएल में अल्पविराम सीमित स्ट्रिंग का विश्लेषण कैसे करें?

  3. Oracle 11g SQL बहु-स्तंभ क्वेरी के एक कॉलम में अद्वितीय मान प्राप्त करने के लिए

  4. विशिष्ट स्तंभों के लिए DISTINCT का उपयोग करना

  5. oracle NCHAR या NVARCHAR कॉलम में राष्ट्रीय वर्ण डालने से काम नहीं चलता