Nie wstawiasz znacznika czasu w określonym formacie. Znaczniki czasu (i daty) są przechowywane w bazie danych za pomocą wewnętrznej reprezentacji, która ma od 7 do 11 bajtów w zależności od typu i precyzji. Więcej na ten temat znajdziesz w tym pytaniu , między innymi.
Twój klient lub aplikacja decyduje, jak wyświetlić wartość w postaci czytelnej dla człowieka.
Kiedy to zrobisz:
to_timestamp(localtimestamp,'YYYY/MM/DD')
niejawnie konwertujesz localtimestamp
do ciągu, używając ustawień NLS sesji, a następnie konwertując go z powrotem na sygnaturę czasową. Może to przypadkowo zmienić wartość — tracąc precyzję — ale nie zmieni sposobu, w jaki wartość jest przechowywana wewnętrznie. W twoim przypadku niezgodność między ustawieniem NLS a dostarczanym formatem prowadzi do błędu ORA-01830.
Więc twoja pierwsza wstawka jest poprawna (zakładając, że naprawdę chcesz mieć czas sesji, a nie czas serwera). Jeśli chcesz zobaczyć przechowywane wartości w określonym formacie, a następnie albo zmień ustawienia NLS sesji klienta, albo najlepiej sformatuj je jawnie podczas zapytania, np.:
select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log