Pesquisar por Data

Boa tarde gente, estou fazendo um projeto de Transportadora com consulta no BD, meu projeto tem os campos de Origem, Destino e Veiculo onde eu preciso listar esses dados a partir da data, mas depois de tanto pesquisar ainda não consegui encontrar uma solução e resolvi ver se alguém poderia me ajudar, desde já agradeço, abaixo segue meu código

Meu metódo de listar pela data:

public ArrayList listarpordata(Date data) throws ErpDAOException {
    Trajeto T = new Trajeto();
    

    PreparedStatement ps = null;
    Connection connL = null;
    ResultSet rs = null;
    try {
        String SQL = "SELECT percursos.Origem, percursos.Destino, carros.veiculo FROM percursos, carros WHERE percursos.ID_veic = carros.ID_veic AND DATA = '?'";
        connL = this.conn;
        ps = connL.prepareStatement(SQL);
        
        java.sql.Date dataSQL = new java.sql.Date(data.getTime());
        ps.setDate(1, data);

        rs = ps.executeQuery();
        ArrayList ListaData = new ArrayList();

        while (rs.next()) {
            String Origem = rs.getString("Origem");
            String Destino = rs.getString("Destino");
            int ID_veic = rs.getInt("ID_veic");
            ListaData.add(new TrajetoFrota(Origem, Destino, ID_veic));
        }
        return ListaData;

    } catch (SQLException sqle) {
        throw new ErpDAOException("Erro ao listar " + sqle);
    } finally {
        ConexaoDAO.close(connL, ps);
    }
}

Minha main

private void CBItemStateChanged(java.awt.event.ItemEvent evt) {                                    
    Trajeto T = new Trajeto();
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");

    
     int posicao = (int) CB.getSelectedIndex();

    if (posicao != -1) {
         Viagens.get(posicao).getData();
        try {
            trajetoDAO TDAO = new trajetoDAO();
            TDAO.listar();
        } catch (ErpDAOException ex) {
            System.out.println("problema");
        }
        Valores.clear();
        for (int i = 0; i < Viagens.size(); i++) {
                Valores.addElement(Viagens.get(i).getOrigem() + " - " + Viagens.get(i).getDestino() + " - " + Viagens.get(i).getID_veic());
          
        }
        TXT.setModel(Valores);
    }

    //atualizaFormulario();

}                                   

private void formWindowActivated(java.awt.event.WindowEvent evt) {                                     
    // TODO add your handling code here:
    carregaCombo();
}                                    


public static void carregaCombo() {
    CB.removeAllItems();
    carregaTrajetos();
    for (int i = 0; i < Viagens.size(); i++) {
        CB.addItem(Viagens.get(i).getData());
    }
}

private void carregaCarros(int ID_veic) {
    try {
        frotaDAO TDAO = new frotaDAO();
        Carros = TDAO.procurar(ID_veic);
        
    } catch (ErpDAOException ex) {
        System.out.println("problema");
    }
}

public static void carregaTrajetos() {
    try {
        trajetoDAO PDAO = new trajetoDAO();
       Viagens = PDAO.listar();
        System.out.println("feito");
    } catch (ErpDAOException ex) {
        System.out.println("problema");
    }
}

private void pesquisaData() throws SQLException {
Date data = null;
DateFormat dtOutput = new SimpleDateFormat(“dd/MM/yyyy”);

try{

    TrajetoFrotaDAO dao = new TrajetoFrotaDAO();
    Viagens = dao.listarpordata((java.sql.Date) data);
    

}   catch (ErpDAOException ex) {
        System.out.println("problema");
    }
}

A partir de qual data? Origem? Chegada?

Não use o = nesta consulta.
Se é a partir de uma determinada data, use o >

WHERE DATA > ?

Se é antes da data

WHERE DATA < ?

Ou as variações <= e >=

Se é entre duas datas

WHERE DATA BETWEEN ? AND ?