Java JDBC com DateTime

Olá, como faço para colocar na DAO um campo do tipo datetime como statement e como ocorre a consulta?
Estou com as DAOs em Java:

public void adiciona(ProjetoPesquisa projetoPesquisa) {
	String sql = "insert into projeto_pesquisa (projeto, dataProjeto, descProjeto, "
		+ "dataHoraEntrevista, valorRecrutamento, incentivo, "            
		+ "beneficios, enderecoEntrevista, convidado_id, idPesquisador, idEmpresa) "
		+ "values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
	
	try (PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql)) {
		stmt.setString(1, projetoPesquisa.getProjeto());
		stmt.setDate(2, Date.valueOf(projetoPesquisa.getDataProjeto())); 
		stmt.setString(3, projetoPesquisa.getDescProjeto());
		stmt.setObject(4, projetoPesquisa.getDataHoraEntrevista());

Porem aparece erro ao inserir pela Main:

om.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '\xAC\xED\x00\x05sr\x00\x0Djava.time.Ser\x95]\x84\xBA\x1B"H\xB2\x0C\x00\x00xpw\x09\x05\x00\x00\x07\xE4\x0C\x0C\x0D\xF3x' for column 'dataHoraEntrevista' at row 1

Na Main ele faz, correto em converter o tipo de Data no formato (yyyy-MM-dd hh:mm) e no banco de dados MySQL está com o tipo datetime.
E em consultas como se faz o “get” da mesma data?

Assumindo que o seu metodo getDataProjeto() retorna uma string com a data:

Você pode fazer duas coisas (Nesses exemplos sua data estaria no formato “2020-09-22”):

  • Fazer um STR_TO_DATE() no seu banco de dados passando a string e deixar a conversão para o MySQL:

...+ "values (?, STR_TO_DATE(?, '%Y-%m-%d'), ?, ?, ?, ?, ?, ?, ?, ?, ?)";

  • Usar a classe SimpleDateFormat para converter a sua String para Date:
    ...
    SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
    try (PreparedStatement stmt = (PreparedStatement) connection.prepareStatement(sql)) {
    stmt.setString(1, projetoPesquisa.getProjeto());
    stmt.setDate(2, format.parse(projetoPesquisa.getDataProjeto()));
    ...

Lembrando que no segundo exemplo, seu objeto precisa ser do tipo java.sql.Date e não java.util.Date.

Você não precisa converter nada, utilize a classe Timestamp para armazenar o datetime, que o driver JDBC se resolve.

Entendi, uma outra dúvida, o cálculo de idade são armazenados em banco de dados? Ou somente em um HTML/CSS?