to_timestamp () получает строку (VARCHAR2, CHAR ...), если вы пытаетесь присвоить ей дату, тогда oracle преобразует ее в строку в соответствии с NLS_DATE_FORMAT, которая может отличаться в разных средах, и возвращает неожиданные результаты (как в это дело).
Сначала вы должны использовать to_char, чтобы ваш запрос мог выглядеть так:
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
ОБНОВЛЕНИЕ: если я вас правильно понимаю, то вы хотите что-то вроде этого:
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