Here's a quick function you may find useful, it calculates a timespan in hours and quarter hours (4.25, 5.5, 6.75, etc):
DELIMITER $$
DROP FUNCTION IF EXISTS `upto`.`hours_and_quarter_hours`$$
CREATE FUNCTION `upto`.`hours_and_quarter_hours`(p_start_time DATETIME, p_end_time DATETIME) RETURNS decimal(5,2)
BEGIN
DECLARE quarter_hours INTEGER;
SET quarter_hours = CEILING((UNIX_TIMESTAMP(p_end_time) - UNIX_TIMESTAMP(p_start_time)) / 900);
RETURN FLOOR(quarter_hours / 4) + (MOD(quarter_hours,4) * .25);
END$$
DELIMITER ;