to_timestamp() mendapat string (VARCHAR2, CHAR ...) jika Anda mencoba memberikan tanggal, maka Oracle akan mengubahnya menjadi string menurut NLS_DATE_FORMAT yang mungkin berbeda di lingkungan yang berbeda dan mengembalikan hasil yang tidak terduga (seperti dalam kasus ini) .
Yang harus Anda lakukan adalah menggunakan to_char terlebih dahulu, sehingga kueri Anda dapat terlihat seperti ini:
select to_date(to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM'),'YYYY-MM-DD HH:MI:SS PM') as localtime
from table
PERBARUI: jika saya memahami Anda dengan benar maka Anda menginginkan sesuatu seperti ini:
select to_char((from_tz(to_timestamp(to_char(DATABASE_DATE, 'YYYY-MM-DD HH:MI:SS PM'), 'YYYY-MM-DD HH:MI:SS PM') ,'America/New_York')
at time zone 'America/Los_Angeles'),'YYYY-MM-DD HH:MI:SS PM TZD') as localtime
from table