Peter, Baron and all, I think that I am almost there. Here's my query to return cycle time in hours:minutes:seconds accounting for business hours. There is some discussion as to when a ticket cycle time ends - for example if a person works on a ticket at 10:00 at night and closes it, it should end then, not at close of business that day.
Thank you for your help. This is more complex than I really feel qualified for and you have really helped me. Regards, Craig DELIMITER $$ DROP FUNCTION IF EXISTS `BizHoursTimeDiff` $$ CREATE [EMAIL PROTECTED] FUNCTION `BizHoursTimeDiff`( d1 DATETIME, d2 DATETIME ) RETURNS char(30) CHARSET latin1 DETERMINISTIC BEGIN DECLARE dow1, dow2, days, wknddays INT; DECLARE tdiff CHAR(20); SET dow1 = DAYOFWEEK(d1); SET dow2 = DAYOFWEEK(d2); set @dayEnd = (select time(`business_hours`.`Day_End`) from `business_hours` limit 1); SET @dayStart = (select time(`business_hours`.`Day_Start`) from `business_hours` limit 1); set @d1 = if (TIME(d1) > @dayEnd,@dayEnd,d1); set @d1 = if (TIME(d1) < @dayStart,@dayStart,d1); #set @d2 = if (TIME(@d2) < @dayStart,@dayStart,@d2); #set @d2 = if @dayEnd,@dayEnd,@d2); SET tdiff = TIMEDIFF( TIME(d2), TIME(d1) ); SET days = DATEDIFF(d2,d1); SET wknddays = 2 * FLOOR( days / 7 ) + IF( dow1 = 1 AND dow2 > 1,1, IF( dow1 = 7 AND dow2 = 1, 1, IF( dow1 > 1 AND dow1 > dow2, 2, IF( dow1 < 7 AND dow2 = 7, 1, 0 ) ) ) ); SET @tdiff = tdiff; SET days = FLOOR(days - wkndDays) - (IF( ASCII(tdiff) = 45, 1, 0 ) + (SELECT count(*) FROM `holidays` WHERE `holidays`.`date` BETWEEN d1 AND d2 AND WEEKDAY(`Holidays`.`date`)<5)); SET tdiff = IF( ASCII(tdiff) = 45, TIMEDIFF( '24:00:00', SUBSTRING(tdiff,2)), TIMEDIFF( tdiff, '00:00:00' )); SET @hr = days * left((@dayEnd - @dayStart),2) + left(tdiff,2); SET @min = mid(tdiff,4,2); SET @sec = mid(tdiff,7,2); RETURN concat_ws(':',@hr,@min,@sec); END $$ DELIMITER ; -------------------------------------------------------- This e-mail, including any attachments, may be confidential, privileged or otherwise legally protected. It is intended only for the addressee. If you received this e-mail in error or from someone who was not authorized to send it to you, do not disseminate, copy or otherwise use this e-mail or its attachments. Please notify the sender immediately by reply e-mail and delete the e-mail from your system.