<cfscript>
function getStartOfThisDay(time)
// Gets a datetime for 6AM on the date given
{
return CreateDateTime(Year(time),Month(time),Day(time),6,0,0);
}
function getEndOfThisDay(time)
// Gets a datetime for 2PM on the date given
{
return CreateDateTime(Year(time),Month(time),Day(time),14,0,0);
}
function getStartOfNextDay(time)
// Gets a datetime for 6AM on the day following the date given
{
var tomorrow = DateAdd('d', 1, time)
return CreateDateTime(Year(tomorrow),Month(tomorrow),Day(tomorrow),6,0,0);
}
function getWorkingMinutes(receivedTime,closedTime)
// Calculates number of minutes between receivedTime and closedTime that are also between 6AM and 2PM
{
var returnVal = 0;
var startOfThisDay = getStartOfThisDay(receivedTime);
var endOfThisDay = getEndOfThisDay(receivedTime);
var startOfNextDay = getStartOfNextDay(receivedTime);
if(receivedTime LT startOfThisDay)
{
receivedTime = startOfThisDay;
}
else if(receivedTime GT endOfThisDay)
{
receivedTime = startOfNextDay;
}
if(receivedTime GTE closedTime)
{
return 0;
}
if(closedTime GT endOfThisDay)
{
returnVal = DateDiff("n",receivedTime,endOfThisDay);
if(closedTime GT nextStartTime)
{
returnVal = returnVal + getWorkingMinutes(nextStartTime,closedTime);
}
}
else
{
returnVal = DateDiff("n",receivedTime,closedTime);
}
return returnVal;
}
function getWorkingHoursAndMinutes(receivedTime,closedTime)
// Calls getWorkingMinutes() and formats the result
{
var intMinutes = getWorkingMinutes(receivedTime,closedTime);
if(intMinutes GT 60)
{
var hours = Int(intMinutes/60);
var minutes = intMinutes - (hours*60);
return hours&" hours, "&minutes&" minutes";
}
else
{
return intMinutes&" minutes";
}
}
</cfscript>
<cfquery name="qryHelpDeskResponse" datasource="myDSN">
SELECT IncidentID, DateReceived, DateResolved
FROM tblIncidents
</cfquery>
<table>
<thead>
<tr>
<td>Incident ID</td>
<td>Date/Time Received</td>
<td>Date/Time Resolved</td>
<td>Response Time</td>
</tr>
</thead>
<tbody>
<cfoutput query="qryHelpDeskResponse">
<tr>
<td>#IncidentID#</td>
<td>#DateFormat(DateReceived,'mm/dd/yyyy')# #TimeFormat(DateReceived,'HH:mm:ss')#</td>
<td>#DateFormat(DateResolved,'mm/dd/yyyy')# #TimeFormat(DateResolved,'HH:mm:ss')#</td>
<td>#getWorkingHoursAndMinutes(DateReceived,DateResolved)#</td>
</tr>
</cfoutput>
</tbody>
</table>
</cfoutput>