Nevkládáte časové razítko v určitém formátu. Časová razítka (a data) jsou uložena v databázi pomocí interní reprezentace, která je mezi 7 a 11 bajty v závislosti na typu a přesnosti. Více o tom je v této otázce , mimo jiné.
Váš klient nebo aplikace rozhodne, jak zobrazit hodnotu ve formě řetězce čitelné pro člověka.
Když to uděláte:
to_timestamp(localtimestamp,'YYYY/MM/DD')
implicitně převádíte localtimestamp
na řetězec, pomocí nastavení NLS vaší relace a poté jej převést zpět na časové razítko. To může náhodně změnit hodnotu - ztratit přesnost - ale nezmění to, jak je hodnota interně uložena. Ve vašem případě nesoulad mezi nastavením NLS a formátem, který dodáváte, vede k chybě ORA-01830.
Takže vaše první vložení je správné (za předpokladu, že opravdu chcete čas relace, ne čas serveru). Pokud chcete vidět uložené hodnoty v určitém formátu pak buď změní nastavení NLS vaší klientské relace, nebo je nejlépe naformátujte explicitně, když se na ně dotazujete, např.:
select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log