Nejprve rozpusťte váš výraz
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'
dělá následující:
TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS')
-> Převéstcreated_date
hodnotu naVARCHAR2
TO_DATE(..., 'DDMMYYYY:HH24:MI:SS')
-> Převeďte jej zpět naDATE
CAST(... AS TIMESTAMP)
-> Převeďte jej naTIMESTAMP
(bez časového pásma)FROM_TZ(..., 'Europe/London')
-> Připojte k němu časové pásmo 'Evropa/Londýn'... AT TIME ZONE 'America/New_York'
-> Převést na časové pásmo 'Amerika/New_York'
Body 1,2 a 3 jsou k ničemu! Od created_date
je TIMESTAMP
můžete to udělat kratší
TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
V případě vašeho SESSIONTIMEZONE
je Europe/London
můžete dokonce vyrobit
TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')