select `pontos`.`hora_entrada`, `pontos`.`hora_saida`, TIMEDIFF(hora_termino, hora_inicio) as total, TIMEDIFF(hora_saida, hora_inicio) as usado, if(TIMEDIFF(hora_saida, hora_termino) < "00:00:00", "00:00:00", TIMEDIFF(hora_saida, hora_termino)) as extra, `agendamentos`.* from `agendamentos` left join `pontos` on `agendamentos`.`id` = `pontos`.`agendamento_id` where `agendamentos`.`medico_id` = 1 and YEAR(agendamentos.data) = 2018 and MONTH(agendamentos.data) = 11 and `agendamentos`.`deleted_at` is null ----- SELECT * FROM ( ( select `pontos`.`hora_entrada`, `pontos`.`hora_saida`, TIMEDIFF(hora_termino, hora_inicio) as total, IF(hora_saida is null, "00:00:00", TIMEDIFF(hora_saida, hora_inicio)) as usado, if((TIMEDIFF(hora_saida, hora_termino) < "00:00:00" or hora_saida is null), "00:00:00", TIMEDIFF(hora_saida, hora_termino)) as extra, `agendamentos`.* from `agendamentos` left join `pontos` on `agendamentos`.`id` = `pontos`.`agendamento_id` where `agendamentos`.`medico_id` = 1 and YEAR(agendamentos.data) = 2018 and MONTH(agendamentos.data) = 11 and `agendamentos`.`deleted_at` is null )as vs ) BEGIN #declare horaSaida time default null; SET @horaSaida := TIMEDIFF(hora_saida, hora_termino); if(@horaSaida < time("00:00:00") or @horaSaida is null) then SET @horaSaida := time("00:00:00"); end if; #if(@horaSaida > time("00:00:00")) then #SET @horaSaida := "maior"; #end if; return @horaSaida; END