Erro Java com mysql 8

Bom dia a todos, estou com um problema no meu programa, quando executo este select:
String cli = “jovem”;
String data = “%2020-04-%”;
String query = “select * from trabalhos where cliente=’” + cli+"’ and data like’"+data+"’";

o resultado são as informações do cliente “jovem” no mes de Abril, mas ele também me mostra as informações do dia 31 do mes de Março deste mesmo cliente; Alguem tem alguma ideia do que poderia ser, eu estava usando o conector java 5. alguma coisa antes, mas tive problemas com o banco mysql 5 do xampp e resolvi instalar o mysql8, agora começou a dar este problema.

Grato fico no aguardo de alguma resposta.

Desculpem, o erro não esta no Java, e sim o Ireport que esta gerando os relatórios com a data errada, sempre ele ta mostrando a data 1 dia atrasado, não achei o porque ainda, se alguém puder ajudar eu agradeço.

Faz um teste com a query desta forma.

String query = “select * from trabalhos where cliente='" + cli+"' and MONTH(data) = '04' and YEAR(data)='2016'

Bom dia vinicius, mas o problema não esta no java e nem no mysql, o problema esta no ireport, só quando exibo os dados no ireport que o dia 1 vira dia 31 do mês anterior e o mês anterior não mostra o dia 31.
Voltei o banco da dados pra versão 5 e parou o problema, não tenho certeza se o ireport não funciona com versão do mysql 8.
Mas obrigado pela atenção.

Você aplicou uma máscara no campo de data lá do teu iReport?

Sim, mas o mesmo Ireport funciona com a versão do mysql 5, quando mudo o banco para a versão 8 é que da o problema que falei.