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

Oracle आज के बीच की तारीख का चयन करें

मान लें कि date_enter एक DATE है फ़ील्ड:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate)
   And CuRo.Date_Enter < trunc(sysdate) + 1;

trunc() फ़ंक्शन डिफ़ॉल्ट रूप से समय भाग निकाल देता है, इसलिए trunc(sysdate) आज सुबह आपको आधी रात देता है।

यदि आप विशेष रूप से between के साथ रहना चाहते हैं , और आपके पास एक DATE है TIMESTAMP नहीं है , आप यह कर सकते हैं:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter between trunc(sysdate)
      And trunc(sysdate) + interval '1' day - interval '1' second;

between समावेशी है, इसलिए यदि आप एक सेकंड की छुट्टी नहीं लेते हैं तो आप संभावित रूप से आज रात ठीक मध्यरात्रि से रिकॉर्ड प्राप्त कर सकते हैं; इसलिए यह 23:59:59 समय उत्पन्न करता है जिसे आप अपनी मूल क्वेरी में ढूंढ रहे थे। लेकिन >= . का उपयोग करके और < वैसे भी, मेरी राय में, थोड़ा स्पष्ट और अधिक स्पष्ट है।

यदि आप सुनिश्चित हैं कि आपके पास आज के बाद की तारीखें नहीं हो सकती हैं, तो ऊपरी सीमा वास्तव में कुछ भी नहीं जोड़ रही है, और आपको वही परिणाम मिलेगा:

Select * From Customer_Rooms CuRo
   Where CuRo.Date_Enter >= trunc(sysdate);

आप trunc . का उपयोग नहीं करना चाहते या to_char date_enter . पर हालांकि स्तंभ; किसी भी फ़ंक्शन का उपयोग करने से उस कॉलम पर एक इंडेक्स का उपयोग होने से रोकता है, यही वजह है कि to_char . के साथ आपकी क्वेरी बहुत धीमा था।



  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 में अद्वितीय कुंजी

  2. JDBC मेटाडा बाधा जानकारी प्राप्त करता है

  3. डेटा वेयरहाउसिंग में स्टार बनाम स्नोफ्लेक स्कीमा?

  4. Oracle dbDriver लोड करने का प्रयास करते समय ORA-01804 त्रुटि

  5. एसक्यूएल ओरेकल शुरुआती प्रश्न