Just to toss in a non “write a clever database routine”:
<?xml version="1.0" encoding="utf-8"?>
<gel:script xmlns:core="jelly:core"
xmlns:file="jelly:com.niku.union.gel.FileTagLibrary"
xmlns:gel="jelly:com.niku.union.gel.GELTagLibrary"
xmlns:soap="jelly:com.niku.union.gel.SOAPTagLibrary"
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:sql="jelly:sql" xmlns:xog="http://www.niku.com/xog"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsl="http://www.w3.org/1999/XML/Transform"
xmlns:util="jelly:util">
<gel:parseDate dateVar="startDate" format="yyyy-MM-dd">2014-06-09</gel:parseDate>
<gel:parseDate dateVar="endDate" format="yyyy-MM-dd">2014-06-23</gel:parseDate>
<core:getStatic className="java.util.Calendar" field="SUNDAY" var="sunDay" />
<core:getStatic className="java.util.Calendar" field="MONDAY" var="monDay" />
<core:getStatic className="java.util.Calendar" field="DAY_OF_WEEK" var="dayOfWeek" />
<core:invokeStatic className="java.util.GregorianCalendar" method="getInstance" var="startCalendar" />
<core:invoke method="setTime" on="${startCalendar}">
<core:arg type="java.util.Date" value="${startDate}"/>
</core:invoke>
<core:invoke method="get" on="${startCalendar}" var="startDayOfWeek">
<core:arg type="java.lang.Integer" value="${dayOfWeek}"/>
</core:invoke>
<core:invoke method="add" on="${startCalendar}">
<core:arg type="java.lang.Integer" value="${dayOfWeek}"/>
<core:arg type="java.lang.Integer" value="${-startDayOfWeek+1}"/>
</core:invoke>
<core:invokeStatic className="java.util.GregorianCalendar" method="getInstance" var="endCalendar" />
<core:invoke method="setTime" on="${endCalendar}">
<core:arg type="java.util.Date" value="${endDate}"/>
</core:invoke>
<core:invoke method="get" on="${endCalendar}" var="endDayOfWeek">
<core:arg type="java.lang.Integer" value="${dayOfWeek}"/>
</core:invoke>
<core:invoke method="add" on="${endCalendar}">
<core:arg type="java.lang.Integer" value="${dayOfWeek}"/>
<core:arg type="java.lang.Integer" value="${-endDayOfWeek+1}"/>
</core:invoke>
<core:invoke method="getTimeInMillis" on="${startCalendar}" var="startMillis"/>
<core:invoke method="getTimeInMillis" on="${endCalendar}" var="endMillis"/>
<core:set value="${(endMillis-startMillis)/(1000*60*60*24)}" var="days" />
<core:set value="${days-(days*2/7)}" var="workDays" />
<gel:log>The number of days = ${days}</gel:log>
<core:if test="${startDayOfWeek == sunDay}">
<core:set value="${monDay}" var="startDayOfWeek"/>
</core:if>
<core:if test="${endDayOfWeek == sunDay}">
<core:set value="${monDay}" var="endDayOfWeek"/>
</core:if>
<core:set var="workingDays" value="${workDays-startDayOfWeek+endDayOfWeek}"/>
<gel:log>The number of working days = ${workingDays}</gel:log>
</gel:script>
V/r,
Gene