Trước tiên, hãy làm tan biểu thức của bạ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'
làm như sau:
-
TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS')-> Chuyển đổicreated_dategiá trị thànhVARCHAR2 -
TO_DATE(..., 'DDMMYYYY:HH24:MI:SS')-> Chuyển nó trở lạiDATE -
CAST(... AS TIMESTAMP)-> Chuyển nó thànhTIMESTAMP(không có múi giờ) -
FROM_TZ(..., 'Europe/London')-> Đính kèm múi giờ 'Châu Âu / Luân Đôn' vào nó -
... AT TIME ZONE 'America/New_York'-> Chuyển đổi sang múi giờ 'America / New_York'
Điểm 1,2 và 3 là vô ích! Kể từ created_date là một TIMESTAMP bạn có thể làm điều đó ngắn hơn
TO_CHAR(FROM_TZ(q.created_date, 'Europe/London') AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')
Trong trường hợp SESSIONTIMEZONE của bạn là Europe/London bạn thậm chí có thể làm cho
TO_CHAR(q.created_date AT TIME ZONE 'America/New_York', 'DD-MON-YYYY HH24:MI:SS')