Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

ngày / giờ Chuyển đổi giữa các múi giờ khác nhau

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:

  1. TO_CHAR(q.created_date, 'DDMMYYYY:HH24:MI:SS') -> Chuyển đổi created_date giá trị thành VARCHAR2
  2. TO_DATE(..., 'DDMMYYYY:HH24:MI:SS') -> Chuyển nó trở lại DATE
  3. CAST(... AS TIMESTAMP) -> Chuyển nó thành TIMESTAMP (không có múi giờ)
  4. FROM_TZ(..., 'Europe/London') -> Đính kèm múi giờ 'Châu Âu / Luân Đôn' vào nó
  5. ... 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')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pl / sql Thủ tục đã lưu trữ ... thời gian thực hiện sẽ đi đến đâu?

  2. Cách giải quyết ORA-29285:lỗi ghi tệp

  3. Oracle DB:Trả về truy vấn thứ hai nếu truy vấn đầu tiên trống

  4. làm thế nào để chuyển đổi ngày thành số tháng?

  5. Một cách để kiểm tra Oracle đã hoàn thành sql