TO_DATE('08:35:42 AM','HH:MI:SS PM')
Il motivo per cui questo non funziona è perché questa non è una data completa. Anche quando si utilizza to_date('07/12/2011','MM/DD/YYYY'), Oracle memorizza la data e l'ora, ma rende ZERO tutti i componenti dell'ora. Quindi la data effettiva memorizzata è 07/12/2011 HH:MI:SS
Se desideri archiviare il componente temporale separatamente, dovrebbe essere un campo varchar e dovrai aggiungerlo alla parte della data per ottenere la data completa. Esempio..
Select to_date(
to_char(date_field_stored_as_date,'DD-MON-YYYY') ||
' ' ||
to_char(time_field_stored_as_varchar),
'DD-MON-YYYY HH24:MI:SS'
)