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_date
giá 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')