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

Chuyển đổi TimeStamp ở định dạng chuỗi TZ thành TimeStamp trong Oracle

Có lẽ chữ T và Z cố định đang làm bạn bối rối một chút, vì chúng không bình thường mô hình định dạng ngày giờ các yếu tố. Nhưng tài liệu nói:

Vì vậy, bạn đặt T và Z trong dấu ngoặc kép, là "T""Z" , trong mô hình định dạng của bạn.

Nếu bạn không bị kích thích trong múi giờ, bạn có thể sử dụng the to_timestamp() chức năng :

to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Hoặc nếu bạn muốn có múi giờ, bạn có thể sử dụng the to_timestamp_tz() chức năng , sẽ mặc định thành múi giờ phiên hiện tại của bạn (vì bạn không thực sự chỉ định múi giờ ở đây, Z không được hiểu là Zulu / UTC):

to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')

Nếu bạn muốn nó có múi giờ và muốn chỉ định rằng đó là UTC, bạn có thể buộc điều đó với the from_tz() chức năng :

from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')

Để xem sự khác biệt mà những thứ đó tạo ra, hãy chỉ định múi giờ cho phiên làm bản trình diễn:

alter session set time_zone = 'America/New_York';

select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
  to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
  from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;

NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000                       
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK      
24-MAR-15 07.08.24.000000000 UTC                  

Tôi giả sử Z là cố định và các giá trị bạn nhận được do đó luôn đại diện cho UTC; nếu bạn thực sự nhận được các múi giờ khác nhau trong các giá trị bạn cần chuyển đổi thì bạn sẽ cần phải trích xuất và áp dụng các múi giờ đó - điều này có thể làm được, nhưng khó và không đáng để thực hiện trừ khi bạn thực sự gặp phải tình huống đó.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle / SQL - Tìm các bản ghi có một giá trị không bao gồm giá trị null

  2. opatch trước yêu cầu

  3. Thêm chỉ báo thứ tự cho một ngày trong Oracle

  4. Làm cách nào để thiết lập một lược đồ cơ sở dữ liệu có hai mối quan hệ nhiều-nhiều đồng thời?

  5. Cần trợ giúp liên kết các bảng tiên tri trong MS Access