Primero, disolvamos tu expresión
FROM_TZ(CAST(TO_DATE(TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS'), 'DDMMYYYY:HH24:MI:SS') AS TIMESTAMP), 'Europe/London') AT TIME ZONE 'America/New_York'
hace lo siguiente:
TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS')
-> Convertircreated_date
valor aVARCHAR2
TO_DATE(..., 'DDMMYYYY:HH24:MI:SS')
-> Convertirlo de nuevo a unaDATE
CAST(... AS TIMESTAMP)
-> Conviértalo en unTIMESTAMP
(sin zona horaria)FROM_TZ(..., 'Europe/London')
-> Adjunte la zona horaria 'Europa/Londres'... AT TIME ZONE 'America/New_York'
-> Convertir a la zona horaria 'América/Nueva_York'
¡Los puntos 1, 2 y 3 son inútiles! Desde created_date
es un TIMESTAMP
puedes hacerlo más corto
TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
En caso de que su SESSIONTIMEZONE
es Europe/London
incluso puedes hacer
TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')