Ho un problema su una query ad un db oracle effettuata tramite jdbc.

la query viene prima preparata tramite il seguente prepared statement:

codice:
 String selectUtenteAudit = "select ID_UTENTE_AUDIT, CREATION_TIME, ACTION, NOTE from UTENTE_AUDIT ";
			  String whereUtenteAudit = "where note like ?";
			  String betweenUtrenteAudit = " and CREATION_TIME BETWEEN ? and ?";
			  
			  // preparazione delle query
			  SELECT_IMP_ERROR_BETWEEN = db.prepareStatement ( selectUtenteAudit + whereUtenteAudit + betweenUtrenteAudit );
			  System.out.println(selectUtenteAudit + whereUtenteAudit + betweenUtrenteAudit );
i parametri da sostituire vengono letti da alcune ComboBox e gestiti nel seguente modo:

codice:
gg1 = cbgg1.getSelectedItem().toString();
			mm1 = cbmm1.getSelectedItem().toString();
			aa1 = cbaa1.getSelectedItem().toString();
			gg2 = cbgg2.getSelectedItem().toString();
			mm2 = cbmm2.getSelectedItem().toString();
			aa2 = cbaa2.getSelectedItem().toString();
			
			if ( (gg1 != "") | (mm1 != "") | (aa1 != "") | (gg2 != "") | (mm2 != "") | (aa2 != "") )
			{
				dataIn = gg1 + "-" + mm1 + "-" + aa1;
				dataFin = gg2 + "-" + mm2 + "-" + aa2;				
			}
			
		    main.executeQuery(id, host, account, action, ercod, dataIn, dataFin);
e questo infine la funzione che si occupa di eseguire la query e di leggere opportunamente l risultato:

codice:
public ArrayList<ImpError> selectErrImp(String u, String h, String a, String act, String err, String data1, String data2)
	 {
		  ArrayList<ImpError> errors = new ArrayList<ImpError>();
		  ResultSet result = null;
		  String note = null;
		  String esito = "%Esito=KO%";

		  
		  try 
		  {
			  // costruisce i parametri di ricerca richiesti
			  if ( (u != null) && (a != null) && (h !=null) )
				  note = "%" + u + "%";
			  
			  if ((h != null) && (note != null))
				  note = note + h + "%";
			  else if (h != null)
				       note = "%" + h + "%";
			  
			  if ((a != null) && (note != null))
				  note = note + a + esito;
			  else if (a != null)
				       note = "%" + a + esito;
			       else note = esito;
			  
			  if ( (err != null) && (err != "Tutti"))
				  note = note + err + "%";
			  
			  
			  // setta i parametri di ricerca
			  if ( note != null )
			  {
				  System.out.println(note + data1 + data2);
				  SELECT_IMP_ERROR_BETWEEN.setString(1, note);
			  }
				  
			  SELECT_IMP_ERROR_BETWEEN.setString(2, data1);
			  SELECT_IMP_ERROR_BETWEEN.setString(3, data2);
			  
			   // esegue la query e la trasforma nell'oggetto ImpError
			  result = SELECT_IMP_ERROR_BETWEEN.executeQuery();
			  errors = ImpError.trasformResult(result);
			  ImpError.printOper(errors);
		  } catch (SQLException e) { e.printStackTrace();	}
		  
		  return errors;
	 }

l'errore che mi compare quando viene lanciata la query in questione è il seguente:

codice:
java.sql.SQLDataException: ORA-01843: not a valid month
se cambio la sequenza della data mettendo anno-mese-giorno invece l'errore che mi viene restituito è il seguente:

codice:
java.sql.SQLDataException: ORA-01861: literal does not match format string
Spero qualcuno possa darmi qualche suggerimento