voici ma réponse... merci les gars !
DELIMITER $$
CREATE FUNCTION `BD`.`func_duration`(fecha_ini DATETIME, fecha_fin DATETIME)
RETURNS FLOAT
BEGIN
DECLARE recorte FLOAT;
SET recorte = -1;
WHILE (fecha_ini <= fecha_fin) DO
IF (HOUR(fecha_ini) >= 6 AND HOUR(fecha_ini) <= 21) THEN
SET recorte = recorte + 1;
END IF;
SET fecha_ini = DATE_ADD(fecha_ini, INTERVAL 1 MINUTE);
END WHILE;
RETURN recorte;
END$$
DELIMITER ;