उदाहरण क्वेरी नीचे, मैंने इसे कैसे हल किया, इसके बारे में कुछ विवरण यहां दिए गए हैं।
DATEDIFF(WK, ...)
. का उपयोग करना हमें 2 तिथियों के बीच सप्ताहों की संख्या देगा। SQL सर्वर दिनों की संख्या के आधार पर सप्ताह की संख्या के बीच अंतर के रूप में इसका मूल्यांकन करता है। यह एकदम सही है, क्योंकि हम इसका उपयोग यह निर्धारित करने के लिए कर सकते हैं कि तिथियों के बीच कितने सप्ताहांत बीत गए।
इसलिए हम सप्ताहांत के दिनों की संख्या प्राप्त करने के लिए उस मान को 2 से गुणा कर सकते हैं और उसे DATEDIFF(dd, ...)
से घटा सकते हैं। कार्यदिवसों की संख्या प्राप्त करने के लिए।
हालांकि, जब प्रारंभ या समाप्ति तिथि रविवार को पड़ती है, तो यह 100% सही ढंग से व्यवहार नहीं करता है। इसलिए मैंने उन उदाहरणों को संभालने के लिए गणना के अंत में कुछ केस लॉजिक जोड़ा।
आप यह भी विचार करना चाहेंगे कि DATEDIFF
. है या नहीं पूर्ण समावेशी होना चाहिए। जैसे 9/10 और 9/11 के बीच का अंतर 1 दिन है या 2 दिन? यदि बाद वाला है, तो आप अंतिम उत्पाद में 1 जोड़ना चाहेंगे।
declare @d1 datetime, @d2 datetime
select @d1 = '9/9/2011', @d2 = '9/18/2011'
select datediff(dd, @d1, @d2) - (datediff(wk, @d1, @d2) * 2) -
case when datepart(dw, @d1) = 1 then 1 else 0 end +
case when datepart(dw, @d2) = 1 then 1 else 0 end