Anda tidak memasukkan stempel waktu dalam format tertentu. Stempel waktu (dan tanggal) disimpan dalam database menggunakan representasi internal, yaitu antara 7 dan 11 byte tergantung pada jenis dan presisi. Ada lebih banyak tentang itu dalam pertanyaan ini , antara lain.
Klien atau aplikasi Anda memutuskan cara menampilkan nilai dalam bentuk string yang dapat dibaca manusia.
Ketika Anda melakukannya:
to_timestamp(localtimestamp,'YYYY/MM/DD')
anda secara implisit mengonversi localtimestamp
ke string, menggunakan setelan NLS sesi Anda, lalu mengonversinya kembali menjadi stempel waktu. Itu mungkin secara tidak sengaja mengubah nilai - kehilangan presisi - tetapi tidak akan mengubah cara nilai disimpan secara internal. Dalam kasus Anda, ketidakcocokan antara pengaturan NLS dan format yang Anda berikan menyebabkan kesalahan ORA-01830.
Jadi sisipan pertama Anda benar (dengan asumsi Anda benar-benar menginginkan waktu sesi, bukan waktu server). Jika Anda ingin melihat nilai yang disimpan dalam format tertentu kemudian ubah pengaturan NLS sesi klien Anda, atau sebaiknya format secara eksplisit saat Anda menanyakannya, mis.:
select to_char(time, 'YYYY-MM-DD HH24:MI:SS.FF3') from activity_log