2011-09-27 10 views
7

मैं यह समझने की कोशिश कर रहा हूं कि टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?

"मंगलवार" कोई मूल्य हो सकता है। इस सवाल बाहर

+0

TSQL SQL सर्वर या Sybase मतलब हो सकता है - जो यह क्या है? और आपने क्या प्रयास किया है? –

उत्तर

1

की जांच: Count work days between two dates

कुछ तरीके हैं जिन्हें तुम अपने लिए उस प्रश्न का उत्तर का लाभ उठाने के रूप में अच्छी तरह कर सकते हैं।

+1

इसके लिए उत्तर इस प्रश्न में कनवर्ट करना वाकई मुश्किल होगा। इसके अलावा वे वास्तव में उन सभी बिंदुओं के योग्य नहीं हैं जिन्हें उन्होंने प्राप्त किया था। उस प्रश्न के लिए बेहतर उत्तर यहां: http://stackoverflow.com/questions/6704905/numbers-of-weekdays-in-a-date-range-in-tsql –

5
declare @from datetime= '9/20/2011' 
declare @to datetime = '9/28/2011' 

select datediff(day, -6, @to)/7-datediff(day, -5, @from)/7 
  1. @from में मंगलवार से पहले पहले सोमवार के सप्ताह पाते हैं।
  2. सप्ताह
+0

+1 शानदार काम करता है। हालांकि, फार्मूला को अब तक क्रैक नहीं कर सकता। यह स्पष्ट है कि '-6' और' -5' क्रमशः या किसी अन्य मंगलवार और संबंधित (बाद में) बुधवार को आसानी से '1' और' 2' हो सकता है। मैं इस बारे में सोच रहा हूं कि क्या आप केवल सही आंकड़ों के लिए अनुभवी हैं या आपने किसी भी तरह उनकी गणना की है। –

+0

@AndriyM yes, -6 और -5 समान परिणाम उत्पन्न करते हैं जैसे 1 और 2 ऐसा करेंगे, जो इसे समझाने में कठोर बना देगा। मैं गणना और परीक्षण करके परिणाम तक पहुंचा, पहले कुछ बार सही परिणाम नहीं मिला। –

+0

@arjmand अगर यह आपकी समस्या का समाधान करता है, तो कृपया उत्तर –

2

@ t-clausen.dk & एंड्री एम t-clausen.dks response and comments

प्रश्न के उत्तर के रूप में @to

  • घटाना के बाद पहले सोमवार के सप्ताह पाते हैं कि 1900- तथ्य का उपयोग करता है 01-01 एक सोमवार था। और 1900/01/01 तारीख 0.

    select dateadd(day,0,0)

    datediff समारोह में दूसरा पैरामीटर StartDate है।

    तो तुम करने की तारीख अपने @ के साथ '1899/12/26' और '1899/12/26' है की तुलना कर रहे एक मंगलवार

    select datename(dw,dateadd(day, 0, -6)), datename(dw, '1899-12-26')

    का उपयोग करता है दूसरी तारीख के बारे में यही बात वही तथ्य

    तथ्य के रूप में आप किसी भी ज्ञात मंगलवार और इसी तरह के बुधवार (जो कि आप जिस अंतराल की जांच कर रहे हैं) में तुलना कर सकते हैं।

    declare @from datetime= '2011-09-19' 
    declare @to datetime = '2011-10-15' 
    
    select datediff(day, '2011-09-13', @to)/7-datediff(day, '2011-09-14', @from)/7 as [works] 
         ,datediff(day, '2011-10-18', @to)/7-datediff(day, '2011-10-19', @from)/7 as [works too] 
         ,datediff(day, '2011-09-27', @to)/7-datediff(day, '2011-09-28', @from)/7 as [dont work] 
    

    असल में एल्गोरिदम "सभी मंगलवार सभी बुधवार से कम है"।

  • 8

    धन्यवाद t-clausen.dk, मुझे कुछ दिन बचाया। प्रत्येक दिन के उदाहरणों में से कोई पाने के लिए:

    declare @from datetime= '3/1/2013' 
    declare @to datetime = '3/31/2013' 
    
    
    select 
    datediff(day, -7, @to)/7-datediff(day, -6, @from)/7 AS MON, 
    datediff(day, -6, @to)/7-datediff(day, -5, @from)/7 AS TUE, 
    datediff(day, -5, @to)/7-datediff(day, -4, @from)/7 AS WED, 
    datediff(day, -4, @to)/7-datediff(day, -3, @from)/7 AS THU, 
    datediff(day, -3, @to)/7-datediff(day, -2, @from)/7 AS FRI, 
    datediff(day, -2, @to)/7-datediff(day, -1, @from)/7 AS SAT, 
    datediff(day, -1, @to)/7-datediff(day, 0, @from)/7 AS SUN 
    
    संबंधित मुद्दे

     संबंधित मुद्दे