2013-10-02 15 views
53

Sự khác nhau giữa loại Oracle DATE và TIMESTAMP là gì? Cả hai đều có thành phần ngày và giờ? Ngoài ra loại tương ứng trong Java cho các loại ngày này là gì?Sự khác biệt giữa oracle DATE và TIMESTAMP

+2

['TIMESTAMP'] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm#SQLRF00203) giống như' DATE', ngoại trừ nó đã thêm độ chính xác phân số giây . – NullUserException

+4

Sự khác biệt lớn nhất: 'DATE' là chính xác cho lần thứ hai và không có số giây phân số. 'TIMESTAMP' có số giây phân số. Số vị trí thập phân trong giây phụ thuộc vào hệ điều hành máy chủ, ví dụ: Oracle trên máy tính Windows 7 của tôi trả lại ba chữ số thập phân cho dấu thời gian trong khi hộp Solaris khổng lồ của khách hàng trả về sáu. Dấu thời gian cũng có thể giữ một múi giờ cụ thể hoặc được chuẩn hóa theo múi giờ chung - đi [tại đây] (http://docs.oracle.com/cd/B28359_01/server.111/b28286/sql_elements001.htm) và sau đó tìm kiếm " TIMESTAMP "để biết thêm thông tin, sau đó thử nghiệm một chút :) –

Trả lời

58

DATE và TIMESTAMP có cùng kích thước (7 byte). Những byte được sử dụng để lưu trữ thế kỷ, thập kỷ, năm, tháng, ngày, giờ, phút và giây. Nhưng TIMESTAMP cho phép lưu trữ thông tin bổ sung, chẳng hạn như số thập phân (11 byte) và số giây với múi giờ (13 byte).

Dấu thời gian được thêm dưới dạng ANSI tuân thủ với Oracle. Trước đó, nó chỉ có DATE.

Trong trường hợp chung, bạn nên sử dụng DATE. Nhưng nếu thời gian chính xác là một yêu cầu, hãy sử dụng TIMESTAMP.

Và về Java, lớp oracle.sql.DATE từ trình điều khiển JDBC Oracle, cung cấp chuyển đổi giữa kiểu dữ liệu Ngày/Dấu thời gian Oracle và các lớp Java java.sql.Date, java.sql.Time và java.sql.Timestamp .

+0

Một lời cảnh báo: rất tiếc, khi bạn truy vấn cột DATE trong Oracle, nó trả về bạn chỉ là" ngày ", nhưng nếu bạn truyền nó như TO_TIMESTAMP (DATE_COLUMN_NAME) sau đó nó trả về cho bạn độ chính xác cao hơn. Mà bằng cách nào đó không phải là mặc định với jdbc/hibernate, ít nhất nó không phải là ở đây. – rogerdpack

+2

"Trong trường hợp chung, bạn nên sử dụng DATE" - nhưng tại sao, chính xác? – siledh

+0

Xin chào @siledh, tôi nghĩ bạn chỉ nên sử dụng TIMESTAMP khi thông tin bổ sung (múi giờ) quan trọng đối với ứng dụng của bạn. Ý tôi là, nó phụ thuộc vào logic kinh doanh của bạn. Ví dụ, bạn phải chọn TIMEZONE khi bạn cần chia sẻ dữ liệu của mình với các ứng dụng được triển khai trên các nền tảng khác nhau và thông tin thời gian phải được hiểu rõ ràng giữa chúng. –

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