Sự khác biệt giữa oracle DATE và TIMESTAMP


92

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


3
TIMESTAMPgiống như DATE, ngoại trừ nó đã thêm độ chính xác giây phân số.
NullUserException

5
Sự khác biệt lớn nhất: DATEchính xác đến từng giây và không có phân số giây. TIMESTAMPcó phân số giây. 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 Windows 7 của tôi trả về ba vị trí 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 thành múi giờ chung - hãy truy cập vào đây và sau đó tìm kiếm "TIMESTAMP" để biết thêm thông tin, sau đó thử nghiệm một chút :)
Ed Gibbs

Câu trả lời:


98

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 như giây phân số (11 byte) và giây phân số với múi giờ (13 byte).

TIMESTAMP đã được thêm vào để tuân theo ANSI cho 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 yêu cầu chính xác về thời gian, hãy sử dụng TIMESTAMP.

Và về Java, lớp oracle.sql.DATE từ trình điều khiển Oracle JDBC, 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.


1
Một lời cảnh báo: rất tiếc, theo mặc định, khi bạn truy vấn cột DATE trong Oracle, nó chỉ trả về cho bạn "ngày", nhưng nếu bạn truyền nó như TO_TIMESTAMP (DATE_COLUMN_NAME) thì 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 là nó không có ở đây.
rogerdpack

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

4
Bạn nên sử dụng TIMESTAMP WITH TIME ZONE. Nếu không, thời gian tiết kiệm ánh sáng ban ngày sẽ giới thiệu thời gian không rõ ràng.
kmkaplan

15
Tôi thấy thực sự khó hiểu, loại DATE đó chứa thông tin TIME. Đó không phải là ý nghĩa của từ này.
Daddy32

3
@ Daddy32 TIMESTAMPđược thêm vào khoảng 20 năm sau DATE. Họ thực sự không thể quay lại và thay đổi DATE.
William Robertson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.