2011-11-28 36 views
5

Có MySQL tương đương với TIMESTAMP của Oracle VỚI Múi giờ không?Có MySQL tương đương với TIMESTAMP của Oracle với TIME ZONE không?

Tôi cần ánh xạ một bảng Oracle, có một số cột với kiểu dữ liệu đó, vào bảng MySQL nhưng tôi dường như không tìm được cách dễ dàng để thực hiện điều này mà không cần sử dụng một số hàm MySQL.

Cảm ơn và chúc mừng tốt đẹp nhất.

+0

Câu trả lời ngắn là không, tôi nghĩ vậy. Có kế hoạch để thêm kiểu dữ liệu như vậy trong phiên bản tương lai của MariaDB (một ngã ba MySQL) nhưng không có ý tưởng về một lịch trình. –

+0

Gói dành cho MariaDB 5.6: http://kb.askmonty.org/en/plans-for-56 –

Trả lời

2

Không, bạn sẽ cần phải chia dữ liệu thành 2 cột, một ngày giờ và thông tin còn lại giữ thông tin múi giờ. Nhưng những gì bạn đưa vào trường sau phụ thuộc vào những gì bạn đã lưu trữ trong Oracle - TIMESTAMP WITH TIME ZONE Datatype có thể chứa TZ offset và (tùy chọn) vùng múi giờ. Rõ ràng sau này là một yêu cầu cho thời gian ngày để được ngữ nghĩa chính xác, nhưng IIRC Oracle không thực thi dữ liệu này được dân cư.

mà không cần đến một số chức năng MySQL

Kể từ MySQL không có kiểu dữ liệu, nó sẽ rất khó khăn để viết MySQL chức năng để xử lý nó - đó là đơn giản hơn rất nhiều để tạo ra một MySQL tương thích đại diện trong Oracle, nơi kiểu dữ liệu được hỗ trợ. Bạn chỉ cần tìm ra dữ liệu bạn đã thực sự có và quyết định cách bạn muốn đại diện cho nó trong MySQL. Theo quy ước có nghĩa là lưu trữ nó trong UTC cùng với TZ trong một cột riêng biệt, sau đó chuyển đổi nó thành lựa chọn với hàm convert_tz (luôn luôn từ UTC)

1

MySQL luôn lưu trữ timestamps as utc. Ngày luôn được lưu trữ mà không có thông tin múi giờ.

Bạn có thể định cấu hình mysql để trả về giá trị từ bây giờ() trong khác nhau timezones.

Để lưu trữ bù đắp hiện tại, bạn cần tự thêm mã này vào cột nào đó.

Các vấn đề liên quan