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

sql सर्वर का उपयोग करके सप्ताहांत को छोड़कर DATEDIFF प्राप्त करें

उदाहरण क्वेरी नीचे, मैंने इसे कैसे हल किया, इसके बारे में कुछ विवरण यहां दिए गए हैं।

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


  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. SQL सर्वर संग्रहीत कार्यविधि में सम्मिलित करने पर तालिका चर खराब प्रदर्शन

  3. क्या एक कनेक्शन के साथ कई एसक्यूएल कमांड निष्पादित करना बेहतर है, या हर बार फिर से कनेक्ट करना बेहतर है?

  4. बड़े बहुभुजों के साथ एक अच्छे SQL Server 2008 स्थानिक सूचकांक का चयन करना

  5. TSQL-2008 SUM(X) ओवर (विभाजन ... खंड द्वारा आदेश)