<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>BlogmyQuery - BMQ &#187; Calc Business Days</title>
	<atom:link href="http://blogmyquery.com/index.php/tag/calc-business-days/feed/" rel="self" type="application/rss+xml" />
	<link>http://blogmyquery.com</link>
	<description></description>
	<lastBuildDate>Tue, 07 Feb 2012 14:15:11 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Calculate businessdays between two dates</title>
		<link>http://blogmyquery.com/index.php/2009/07/calculate-businessdays-between-two-dates/</link>
		<comments>http://blogmyquery.com/index.php/2009/07/calculate-businessdays-between-two-dates/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 18:55:21 +0000</pubDate>
		<dc:creator>jackjeetu1</dc:creator>
				<category><![CDATA[Sqlserver]]></category>
		<category><![CDATA[Calc Business Days]]></category>
		<category><![CDATA[Sql Server]]></category>

		<guid isPermaLink="false">http://blogmyquery.com/?p=593</guid>
		<description><![CDATA[This Example shows how to calculate the calculate the workdays between two given dates.
CREATE FUNCTION dbo.GetBusinessDays
(
@startDate SMALLDATETIME,
@endDate SMALLDATETIME
)
RETURNS INT
AS
BEGIN
DECLARE @dateDiff [...]]]></description>
			<content:encoded><![CDATA[<p>This Example shows how to calculate the calculate the workdays between two given dates.</p>
<p><span style="color: #800000;">CREATE FUNCTION dbo.GetBusinessDays<br />
(<br />
@startDate SMALLDATETIME,<br />
@endDate SMALLDATETIME<br />
)<br />
RETURNS INT<br />
AS<br />
BEGIN<br />
DECLARE @dateDiff INT;</span></p>
<p><span style="color: #800000;">SET @dateDiff = DATEDIFF(DAY, @startDate, @endDate)+1;</span></p>
<p><span style="color: #800000;">RETURN<br />
(<br />
SELECT @dateDiff/ 7 * 5 + CASE </span><span style="color: #800000;">WHEN </span><span style="color: #800000;">(@dateDiff % 7) = 0 THEN 0</span></p>
<p><span style="color: #800000;">ELSE<br />
</span></p>
<p><span style="color: #800000;"> CASE<br />
When (DATEPART(WEEKDAY, @endDate ) + @@DateFirst -1)%7 = 0 and </span><span style="color: #800000;">(@dateDiff % 7) =1 </span><span style="color: #800000;">Then </span><span style="color: #800000;">(@dateDiff % 7)-1</span><span style="color: #800000;"> &#8211;If it is sunday</span></p>
<p><span style="color: #800000;"> When (DATEPART(WEEKDAY, @endDate ) + @@DateFirst -1)%7 = 0 and </span><span style="color: #800000;">(@dateDiff % 7) &lt;&gt;1 </span><span style="color: #800000;"> </span><span style="color: #800000;"> </span><span style="color: #800000;">Then </span><span style="color: #800000;">(@dateDiff % 7)-2</span><span style="color: #800000;"> &#8211;If it is sunday<br />
</span></p>
<p><span style="color: #800000;"> When (DATEPART(WEEKDAY, @endDate ) </span><span style="color: #800000;">+ @@DateFirst</span><span style="color: #800000;"> -1)%7 =6 </span><span style="color: #800000;"> Then (@dateDiff % 7) &#8211; 1   &#8211;If it is Saturday</span></p>
<p><span style="color: #800000;">ELSE (@dateDiff % 7)<br />
END &#8212; Inner Case<br />
</span></p>
<p><span style="color: #800000;">END<br />
</span></p>
<p><span style="color: #800000;">);<br />
END</span></p>
<p><span style="color: #800000;"><span id="more-593"></span></span></p>
<p><span style="color: #000000;">There are many other ways of achieving this , you can also look at the following examples</span></p>
<p><span style="color: #800000;"><br />
</span></p>
<p><span style="color: #800000;">CREATE FUNCTION dbo.GetWorkingDays<br />
(<br />
@startDate SMALLDATETIME,<br />
@endDate   SMALLDATETIME<br />
)<br />
RETURNS INT<br />
AS<br />
BEGIN<br />
DECLARE @range INT;</span></p>
<p><span style="color: #800000;">SET @range = DATEDIFF(DAY, @startDate, @endDate)+1;</span></p>
<p><span style="color: #800000;">RETURN<br />
(<br />
SELECT<br />
@range / 7 * 5 + @range % 7 -<br />
(<br />
SELECT COUNT(*)<br />
FROM<br />
(<br />
SELECT 1 AS d<br />
UNION ALL SELECT 2<br />
UNION ALL SELECT 3<br />
UNION ALL SELECT 4<br />
UNION ALL SELECT 5<br />
UNION ALL SELECT 6<br />
UNION ALL SELECT 7<br />
) weekdays<br />
WHERE d &lt;= @range % 7<br />
AND DATENAME(WEEKDAY, @endDate &#8211; d + 1)<br />
IN<br />
(<br />
&#8216;Saturday&#8217;,<br />
&#8216;Sunday&#8217;<br />
)<br />
)<br />
);<br />
END<br />
GO</span></p>
<p><span style="color: #800000;"><span style="color: #000000;">or this that i found on one of the forums</span></span></p>
<pre><span style="color: #800000;">DECLARE @start_date DATETIME;
DECLARE @end_date DATETIME;

SET @start_date = '20080820';
SET @end_date = '20080825';

SELECT ((total_days / 7) * 5 + total_days % 7 -
CASE WHEN 6 BETWEEN start_weekday AND end_weekday
THEN 1 ELSE 0 END -
CASE WHEN 7 BETWEEN start_weekday AND end_weekday
THEN 1 ELSE 0 END)
FROM (SELECT total_days, start_weekday,
start_weekday + total_days % 7 - 1
FROM (SELECT DATEDIFF(day, @start_date, @end_date) + 1,
DATEPART(WEEKDAY, @start_date + @@DATEFIRST - 1)
) AS T(total_days, start_weekday)
) AS D(total_days, start_weekday, end_weekday);</span>
</pre>
<p><span style="color: #000000;">NOTE : This example doesnot holidays other than saturday and sunday into account.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://blogmyquery.com/index.php/2009/07/calculate-businessdays-between-two-dates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

