Не вмъквате клеймо за време в определен формат. Времевите марки (и датите) се съхраняват в базата данни с помощта на вътрешно представяне, което е между 7 и 11 байта в зависимост от типа и точността. В този въпрос има повече за това , между другото.
Вашият клиент или приложение решава как да покаже стойността в четима от човека форма на низ.
Когато го направите:
to_timestamp(localtimestamp,'YYYY/MM/DD')
вие имплицитно конвертирате localtimestamp
в низ, използвайки NLS настройките на вашата сесия и след това го конвертирате обратно в клеймо за време. Това може случайно да промени стойността - загуба на точност - но няма да промени начина, по който стойността се съхранява вътрешно. Във вашия случай несъответствието между настройката на NLS и формата, който предоставяте, води до грешка ORA-01830.
Така че първото ви вмъкване е правилно (ако приемем, че наистина искате времето на сесията, а не времето на сървъра). Ако искате да видите съхранените стойности в конкретен формат, след това или променете настройките на NLS на сесията на вашия клиент, или за предпочитане я форматирайте изрично, когато я правите заявка, напр.:
select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log