मैं यह समझने की कोशिश कर रहा हूं कि टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?
"मंगलवार" कोई मूल्य हो सकता है। इस सवाल बाहर
मैं यह समझने की कोशिश कर रहा हूं कि टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?टीएसक्यूएल में दो तिथियों के बीच "मंगलवार" की संख्या की गणना कैसे करें?
"मंगलवार" कोई मूल्य हो सकता है। इस सवाल बाहर
की जांच: Count work days between two dates
कुछ तरीके हैं जिन्हें तुम अपने लिए उस प्रश्न का उत्तर का लाभ उठाने के रूप में अच्छी तरह कर सकते हैं।
इसके लिए उत्तर इस प्रश्न में कनवर्ट करना वाकई मुश्किल होगा। इसके अलावा वे वास्तव में उन सभी बिंदुओं के योग्य नहीं हैं जिन्हें उन्होंने प्राप्त किया था। उस प्रश्न के लिए बेहतर उत्तर यहां: http://stackoverflow.com/questions/6704905/numbers-of-weekdays-in-a-date-range-in-tsql –
declare @from datetime= '9/20/2011'
declare @to datetime = '9/28/2011'
select datediff(day, -6, @to)/7-datediff(day, -5, @from)/7
+1 शानदार काम करता है। हालांकि, फार्मूला को अब तक क्रैक नहीं कर सकता। यह स्पष्ट है कि '-6' और' -5' क्रमशः या किसी अन्य मंगलवार और संबंधित (बाद में) बुधवार को आसानी से '1' और' 2' हो सकता है। मैं इस बारे में सोच रहा हूं कि क्या आप केवल सही आंकड़ों के लिए अनुभवी हैं या आपने किसी भी तरह उनकी गणना की है। –
@AndriyM yes, -6 और -5 समान परिणाम उत्पन्न करते हैं जैसे 1 और 2 ऐसा करेंगे, जो इसे समझाने में कठोर बना देगा। मैं गणना और परीक्षण करके परिणाम तक पहुंचा, पहले कुछ बार सही परिणाम नहीं मिला। –
@arjmand अगर यह आपकी समस्या का समाधान करता है, तो कृपया उत्तर –
@ t-clausen.dk & एंड्री एम t-clausen.dks response and comments
प्रश्न के उत्तर के रूप में @to
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]
असल में एल्गोरिदम "सभी मंगलवार सभी बुधवार से कम है"।
धन्यवाद 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
TSQL SQL सर्वर या Sybase मतलब हो सकता है - जो यह क्या है? और आपने क्या प्रयास किया है? –