मुझे लगता है कि आपकी क्वेरी सही परिणाम देती है लेकिन इसे थोड़ा सरल किया जा सकता है।
हालांकि यह SET DATEFIRST पर निर्भर है। सेटिंग।
datepart(dw,[Date]) = 1
सोमवार की संख्या की गणना करेगा यदि SET DATEFIRST
है 1.
इसे आजमाएं:
set datefirst 7 -- Sunday
select datepart(dw, '20111227')
set datefirst 1 -- Monday
select datepart(dw, '20111227')
परिणाम:
-----------
3
-----------
2
अपडेट करें: एक और क्वेरी जो ऐसा ही करती है।
select count(*) as Daycount
from master..spt_values as Number
where Number.type = 'P' and
dateadd(day, Number.number, @StartDate) <= @EndDate and
datepart(dw, dateadd(day, Number.number, @StartDate)) = 1