Najpierw rozpuśćmy twoją ekspresję
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'
wykonuje następujące czynności:
TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS')
-> Konwertujcreated_date
wartość doVARCHAR2
TO_DATE(..., 'DDMMYYYY:HH24:MI:SS')
-> Konwertuj go z powrotem naDATE
CAST(... AS TIMESTAMP)
-> Przekształć go wTIMESTAMP
(bez strefy czasowej)FROM_TZ(..., 'Europe/London')
-> Dołącz do niej strefę czasową „Europa/Londyn”... AT TIME ZONE 'America/New_York'
-> Konwertuj na strefę czasową „Ameryka/Nowy_Jork”
Punkty 1,2 i 3 są bezużyteczne! Od created_date
to TIMESTAMP
możesz to zrobić krócej
TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
W przypadku Twojego SESSIONTIMEZONE
to Europe/London
możesz nawet zrobić
TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')