Вы сказали, что «данные содержат и дату, и время в 2000-03-20: 23: 12: 29.176262 и 991010049».Вы должны явно кодировать для обоих случаев.Если есть другие случаи, вы должны написать для каждого из них.
Мне кажется странным, что между частью даты и частью времени есть двоеточие.Это по-настоящему или это тип?Я предполагаю, что это на самом деле, но вы можете изменить формат самостоятельно, я надеюсь.
with data(x) as (
select '2000-03-20:23:12:29.176262' from dual
union all
select '991010049' from dual
)
select case
when substr(x,5,1) = '-' then to_timestamp(x, 'yyyy-mm-dd:hh24:mi:ss.ff')
else cast(date '1970-01-01' + numtodsinterval(x, 'second') as timestamp)
end ts
from data;
TS
-----------------------------
2000-03-20 23:12:29,176262000
2001-05-28 00:34:09,000000000
С уважением, Stew Ashton