Самый простой подход - использовать литерал метку времени, чтобы вы не полагались на неявное преобразование:
select timestamp '2013-01-01 00:00:00.0000' from dual;
Вы также можете использовать to_timestamp()
:
select to_timestamp('2013-01-01 00:00:00.0000', 'yyyy-mm-dd hh24:mi:ss:ff4') from dual;
С другой стороны, если вы действительно хотите работать со строкой, вам нужно будет изменить настройку nls на свой собственный формат, прежде чем:
alter session set nls_timestamp_format = 'yyyy-mm-dd hh24:mi:ss:ff4';
Затем вы можете использовать строковое значение непосредственно в запросе, и Oracle неявно преобразует его в целевой тип данных при вставке.