Secondo me va in casino perchè quando scrivi
LIKE '?%'
Interpreta il ? non come una posizione in cui fare il setObject, ma come un carattere di una stringa.
Invece quando scrivi LIKE ?-?-?%
trova tutti i ? che gli servono per fare i set, ma non trova più la stringa nel formato 'stringa', tra apici.
Secondo me se riuscissi a scrivere la queri in questo modo:
LIKE ?
con
il ? settato con un setString ("blablabla%", 3);
dovrebbe funzionare.
Il Like funziona per le stringhe, non credo per le date, quindi il tuo ultimo tentativo dovrebbe fallire anche per questo.