AJuda ao tentar substituir em PreparedStatement..Erro

Folks,

porque me dá erro na hora de substituir a data no comando SQL.
pst.setString(2, dataTodate);

se alguém puder me ajudar …agradeceria…

abs

erro:
java.sql.SQLException: ORA-01858: foi localizado um caractere não-numérico onde se esperava um numérico
public NFe leNotaFiscalCancelada (long notaFiscal,String dataEmissao) throws SQLException{
		NFe n = null;
		try {
			Connection conn = ServiceLocator.getInstance().getConnection();;
			ResultSet rs = null;
			ResultSet rs1 = null;
			PreparedStatement pst =null;
			StringBuilder sql = new StringBuilder("");
			
                        String dataTodate ="to_date('"+dataEmissao+"','ddmmyyyy')"	;

			sql= leSQL("notaCancelada");
			pst = conn.prepareStatement(sql.toString());
			pst.setLong(1, notaFiscal);
			pst.setString(2, dataTodate);


			rs  = pst.executeQuery();
			while(rs.next()){
                            ....
                        }			
			
	    }catch(Exception e){
			System.out.println("Erro NFeDAO leNotaFiscalCancelada ="+e); 
			e.printStackTrace();
	    }
			
--metodo

private StringBuilder leSQL(String chave){

if (chave.equals("notaCancelada")){
			
	sql.append("\n  select '55' mod , ");
			sql.append("\n         nvl(nota.NR_SERIE_NF,'1')   serie  ,  ");
			sql.append("\n         nota.NR_NF nNF  ,   ");
			sql.append("\n         to_char(nota.DT_EMISSAO,'YYYY-MM-DD') dEmi,  ");
			sql.append("\n         filialemit.nr_cnpj     CNPJ ,  ");
			sql.append("\n         nvl(geral.SG_ESTADO,';;') UF   ");
			sql.append("\n  from        tb_nf nota,  ");
			sql.append("\n              tb_filial filialemit ,  ");
			sql.append("\n              tb_endereco_geral geral, ");
			sql.append("\n              tb_nf_comple_unica  nf_comple_unica ");
			sql.append("\n  where  nota.CD_TRANSACAO_CLIENTE =18 --TRANSF. MERC. DEPOSITO/FILIAL");
			sql.append("\n  and    nota.CD_FILIAL = filialemit.CD_FILIAL");
			sql.append("\n  and    geral.CD_FILIAL = nota.CD_FILIAL");
			sql.append("\n  and    nf_comple_unica.ID_NF = nota.ID_NF");
			sql.append("\n  and    nota.nr_nf = ?");
			sql.append("\n  and    nota.dt_emissao = ?");
			sql.append("\n  and    nf_comple_unica.FL_CANCELADO =1");
			}

o que fiz e deu certo :

no select no campo do banco usei to_char

if (select.equals("cancela")){
sql.append("\n  select '55' mod , ");
			sql.append("\n         nvl(nota.NR_SERIE_NF,'1')   serie  ,  ");
			sql.append("\n         nota.NR_NF nNF  ,   ");
			sql.append("\n         to_char(nota.DT_EMISSAO,'YYYY-MM-DD') dEmi,  ");
			sql.append("\n         filialemit.nr_cnpj     CNPJ ,  ");
			sql.append("\n         nvl(geral.SG_ESTADO,';;') UF   ");
			sql.append("\n  from        kkkkk,  ");
			sql.append("\n              gggggg ,  ");
			sql.append("\n              tttttttt, ");
			sql.append("\n              xxxxxxxxxx ");
			sql.append("\n  where  nota.CD_TRANSACAO_CLIENTE =18 --TRANSF. MERC. DEPOSITO/FILIAL");
			sql.append("\n  and    nota.CD_FILIAL = filialemit.CD_FILIAL");
			sql.append("\n  and    geral.CD_FILIAL = nota.CD_FILIAL");
			sql.append("\n  and    nf_comple_unica.ID_NF = nota.ID_NF");
			sql.append("\n  and    nota.nr_nf = ?");
			sql.append("\n  and    to_char(nota.dt_emissao,'ddmmyyyy') = ?");
			sql.append("\n  and    nf_comple_unica.FL_CANCELADO =1");
}			

e no DAO usei como String e passou


	public NFe leCancelada (long notaFiscal,String dataEmissao) throws SQLException{
		NFe n = null;
		try {
			Connection conn = ServiceLocator.getInstance().getConnection();;
			ResultSet rs = null;
			PreparedStatement pst =null;
			StringBuilder sql = new StringBuilder("");
			sql= leSQL("notaCancelada");
			pst = conn.prepareStatement(sql.toString());
			pst.setLong(1, notaFiscal);
			pst.setString(2, dataEmissao);
			rs  = pst.executeQuery();