अगले_दिन और नियमित तिथि अंकगणित। नीचे कोड बहुत करीब होना चाहिए, लेकिन यह अवांछित है और शायद किसी कोने के मामले में विफल रहता है, लेकिन कम से कम आपको सामान्य विचार मिलता है :)
where resolved_date >= next_day( trunc(sysdate) - interval '14' day, 'SUN')
and resolved_date < next_day( trunc(sysdate) - interval '7' day, 'SUN')
trunc(sysdate)
तारीख को दिन में छोटा करें; 2011-04-19 23:32:34 2011-04-19 00:00:00 हो जाता है, यानी समय घटक को हटा रहा है।next_day(sysdate, 'SUN')
अगले रविवार को लौटता है। यदि sysdate रविवार को होता है, तो अगला रविवार वापस आ जाता है।
महत्वपूर्ण :दिन के नाम आपके सत्र की भाषा में ही होने चाहिए।interval
बात किसी तिथि से समय की विभिन्न इकाइयों को जोड़ने/घटाने का एक मानक तरीका है।
इन सब को मिलाकर, 19 अप्रैल 2011 का तर्क होगा:
- Truncate sysdate => 2011-04-19 00:00:00
- 14 दिन घटाएं => 2011-04-05 00:00:00
- अगला रविवार ढूंढें => 2011-04-10 00:00:00
...और
- Truncate sysdate => 2011-04-19 00:00:00
- 7 दिन घटाएं => 2011-04-12 00:00:00
- अगला रविवार ढूंढें => 2011-04-17 00:00:00
..निम्नलिखित क्वेरी के परिणामस्वरूप:
where resolved_date >= timestamp '2011-04-10 00:00:00'
and resolved_date < timestamp '2011-04-17 00:00:00'
10:वें के पहले सेकंड को या उसके बाद लेकिन 17:वें के पहले सेकंड से पहले हुई सभी हल की गई तारीखों को शामिल किया जाएगा। ध्यान दें कि >=
और <
between
. के बराबर नहीं है ।
प्रदर्शन पर एक नोट:मैं यह सुनिश्चित करता हूं कि ओरेकल सही ढंग से 7 दिनों की तारीख सीमा का अनुमान लगाता है, और सही जॉइन ऑर्डर/विधि का उपयोग किया जाता है। यदि आप कुछ समय के लिए क्वेरी चलने की अपेक्षा करते हैं, तो आप आवेदन में तिथियों की गणना करने और उन्हें ऊपर की तरह फ्लाई पर गणना करने के बजाय उन्हें डेट लिटरल्स के रूप में आपूर्ति कर सकते हैं।