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

दो तिथियों के बीच की तिथियां ढूँढना (सर्वोत्तम अभ्यास)

आप सर्वोत्तम प्रथाओं के लिए पूछ रहे हैं। मुझे लगता है कि निम्नलिखित सर्वोत्तम अभ्यास है:

"Date" >= DATE '2014-04-11' AND "Date" < DATE '2014-04-12' + 1

सबसे पहले, DATE . के उपयोग पर ध्यान दें खोजशब्द। आपका सवाल तारीखों के बारे में है और फिर भी आप एक तिथि प्रारूप का उपयोग कर रहे हैं जिसका Oracle सीधे समर्थन नहीं करता है। खुशी की बात है कि Oracle ANSI मानक का समर्थन करता है DATE आईएसओ मानक प्रारूप वाला कीवर्ड।

दूसरा, मैंने एक +1 जोड़ा तो आप समय अवधि का अंत देख सकते हैं, जो संभवत:आप कोड में देखना चाहते हैं। यह प्रदर्शन को प्रभावित नहीं करना चाहिए क्योंकि + 1 स्थिर है।

तीसरा, दिनांक स्थिरांक में समय घटक होता है। जब कोई निर्दिष्ट नहीं किया जाता है, तो यह तिथि की मध्यरात्रि है। तो, अभिव्यक्ति:

"Date" BETWEEN '2014-04-11' AND '2014-04-12'

वास्तव में है:

"Date" >= TIMESTAMP '2014-04-11 00:00:00' AND "Date" <= TIMESTAMP '2014-04-12 00:00:00'

यानी बाद की तारीख से ठीक एक बार, आधी रात को पहला पल शामिल है। यह आमतौर पर वह नहीं है जो आप चाहते हैं। Oracle इस समस्या को दो तरह से बदतर बनाता है:

  1. date डेटा प्रकार में एक समय घटक शामिल होता है।
  2. प्रस्तुत करने का डिफ़ॉल्ट तरीका date मानों का कोई समय घटक नहीं होता है।

इसलिए, सबसे सुरक्षित रहने के लिए, निम्नलिखित नियमों का उपयोग करें:

  • between का प्रयोग न करें तारीखों पर।
  • >= का प्रयोग करें पहली तारीख के लिए।
  • उपयोगकर्ता < दूसरे के लिए।

एरोन बर्ट्रेंड के पास एक ब्लॉग है बिल्कुल इस विषय पर। हालांकि यह विशेष रूप से SQL सर्वर के बारे में है, कई विचार Oracle पर लागू होते हैं - विशेष रूप से क्योंकि date Oracle में डेटा प्रकार में समय शामिल होता है।



  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 LISTAGG () क्वेरी के उपयोग के लिए

  2. Oracle में विभाजित स्ट्रिंग कॉलम में शामिल हों

  3. वेब साइट डाउन और ट्विटर फीड

  4. अनुमानी प्रतिभागियों की कभी न खत्म होने वाली आवधिक वसूली

  5. ओरेकल में टेबल को कैसे अपडेट करें