SYSK 234: WeekDiff = Number of Weeks (full + partial) Between Two Dates


If you need to find out the number of weeks in a month, or the number of weeks between two given dates, and you need to includes partial weeks, not just full weeks as done by the T-SQL datediff(wk, d1, d2) function, then the code snippet below should get you started.


 


NOTE:  To make it a bit more flexible, you can add an argument (firstDayOfWeek) that the caller would need to pass in, instead of assuming that it’s Sunday, as in the code below.


 


private int WeekDiff(DateTime d1, DateTime d2)


{


    int result = 0;


 


    // Get first full week


    DateTime firstDayOfFirstFullWeek = d1;


    if (d1.DayOfWeek != DayOfWeek.Sunday)


    {


        result += 1;


        firstDayOfFirstFullWeek = d1.AddDays((7 - (int)d1.DayOfWeek));


    }


 


    // Get last full week


    DateTime lastDayOfLastFullWeek = d2;


    if (d2.DayOfWeek != DayOfWeek.Saturday)


    {


        result += 1;


        lastDayOfLastFullWeek = d2.AddDays(-(int)d2.DayOfWeek - 1);


    }


 


    // Add number of full weeks


    result += (lastDayOfLastFullWeek.Day - firstDayOfFirstFullWeek.Day + 1) / 7;


   


 


    return result;


}


 


 

Comments (0)

Skip to main content