Click here to Skip to main content
15,900,816 members
Please Sign up or sign in to vote.
3.00/5 (1 vote)
See more:
hi,

How we can calculate the exact no of days in a week
eg: take oct first week it actuall 5 days only ...2 days in septober...i need out put as 5
while querying for some calculation....help me
Posted
Comments
ArunRajendra 23-Oct-13 2:26am    
What is the input, is a date in the week or week number?

Try this code. Hope this is what you want. This will start and end date of the week. You use it to calculate number of days in that week.

SQL
select dateadd(DD,-(DATEPART(dw, GETDATE()-1)),GETDATE())
,dateadd(DD,7-DATEPART(dw, GETDATE()),GETDATE())
 
Share this answer
 
v3
I am assuming by week you mean the week in the month, not the week in the year.

So for example, week 1 in October 2013 has 6 days and week 5 in October 2013 has 4 days.

If that is the case then something like this might work for you;

declare @year int
declare @month int
declare @week int
declare @target datetime

declare @firstDay int

declare @startOfMonth datetime
declare @endOfMonth datetime
declare @startOfMonthsFirstWeek datetime
declare @startOfWeek datetime
declare @endOfWeek datetime
declare @start datetime
declare @end datetime

-- These three are the input
set @year=2013
set @month=10
set @week=5

set @startOfMonth=cast(cast(@year as varchar) + '-' + cast(@month as varchar) + '-1' as datetime)
set @endOfMonth=dateadd(day, -1, cast(cast(@year as varchar) + '-' + cast(@month + 1 as varchar) + '-1' as datetime))

set @startOfMonthsFirstWeek = case datepart(weekday, @startOfMonth) when 1 then @startOfMonth else dateadd(day, 2 -datepart(weekday, @startOfMonth), @startOfMonth) end
set @startOfWeek = dateadd(day, 7 * (@week - 1), @startOfMonthsFirstWeek)
set @endOfWeek = dateadd(day, 7 * @week - 1, @startOfMonthsFirstWeek)

select @start = max([Date]) from (select @startOfMonth as [Date] union (select @startOfWeek as [Date])) as [Start]
select @end = min([Date]) from (select @endOfWeek as [Date] union (select @endOfMonth as [Date])) as [End]

declare @numberOfDaysInMonthWeek int
set @numberOfDaysInMonthWeek = 1 + datediff(day, @start, @end)

select @numberOfDaysInMonthWeek as [NumberOfDaysInWeekOfMonth]


Hope this helps,
Fredrik
 
Share this answer
 

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900