Часть в миллисекундах означает, что это не дата. Вам необходимо привести к временной метке, такой как:
select to_timestamp('16-01-2012 00:00:00,000000','dd-mm-yyyy hh24:mi:ss,FF')
from dual
Если вам нужен формат даты, вы можете привести его к следующему:
select to_date(
to_char(
to_timestamp('16-01-2012 00:00:00,000000'
,'dd-mm-yyyy hh24:mi:ss,FF')
,'dd-mm-yyyy hh24:mi:ss')
,'dd-mm-yyyy hh24:mi:ss')
from dual