<cfquery datasource="mydsn" name="getDuration">
SELECT dtEventStart, dtEventEnd,
DATEDIFF(d, dtEventStart, dtEventEnd) AS TotalDays,
DATEDIFF(hh, dtEventStart, dtEventEnd) % 24 AS TotalHours,
DATEDIFF(n, dtEventStart, dtEventEnd) % 60 AS TotalMinutes
FROM myTable
WHERE ID = '#ID#'
</cfquery>
Outage Duration:
<cfoutput query="getDuration">
#TotalDays# day(s), #TotalHours# hour(s), #TotalMinutes# minute(s)
</cfoutput>
<!--- get query values --->
<cfquery datasource="myDNS" name="getDuration">
SELECT dtEventStart, dtEventEnd
FROM myTable
WHERE intID = '#ID#'
</cfquery>
<cfoutput>
<cfset qry.StartDate = #getDuration.dtEventStart#>
<cfset qry.EndDate = #getDuration.dtEventEnd#>
</cfoutput>
<cfset duration = fullDuration(qry.startDate, qry.EndDate)>
<cffunction name="fullDuration" returntype="struct">
<cfargument name="startDate" type="date">
<cfargument name="endDate" type="date">
<cfset var duration = structNew()>
<cfif dateCompare(arguments.startDate, arguments.endDate) gt 0>
<cfthrow message="StartDate cannot be greater than EndDate">
</cfif>
<cfset duration.years = dateDiff("yyyy", arguments.StartDate, arguments.endDate)>
<cfset arguments.endDate = dateAdd("yyyy", -duration.years, arguments.endDate)>
<cfset duration.months = dateDiff("m", arguments.StartDate, arguments.endDate)>
<cfset arguments.endDate = dateAdd("m", -duration.months, arguments.endDate)>
<cfset duration.days = dateDiff("d", arguments.StartDate, arguments.endDate)>
<cfset arguments.endDate = dateAdd("d", -duration.days, arguments.endDate)>
<cfset duration.hours = dateDiff("h", arguments.StartDate, arguments.endDate)>
<cfset arguments.endDate = dateAdd("h", -duration.hours, arguments.endDate)>
<cfset duration.minutes = dateDiff("n", arguments.StartDate, arguments.endDate)>
<cfset arguments.endDate = dateAdd("n", -duration.minutes, arguments.endDate)>
<cfset duration.seconds = dateDiff("s", arguments.StartDate, arguments.endDate)>
<cfreturn duration >
</cffunction>
Outage Duration:
<cfoutput>
<cfif #duration.days# gt 0>
#duration.days# day(s),
</cfif>
<cfif #duration.hours# gt 0>
#duration.hours# hour(s),
</cfif>
<cfif #duration.minutes# gt 0>
#duration.minutes# minute(s)
</cfif>
</cfoutput>
Open in new window