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
Trả lời
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 .
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
"Trong trường hợp chung, bạn nên sử dụng DATE" - nhưng tại sao, chính xác? – siledh
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. –
- 1. Sự khác nhau giữa các loại DATE, TIME, DATETIME và TIMESTAMP
- 2. Sự khác biệt giữa Java và Oracle Java cho Redhat
- 3. Sự khác biệt giữa MySQL và Oracle DB
- 4. Sự khác nhau giữa System.currentTimeMillis() và Date getTime()?
- 5. Sự khác biệt giữa $ (...) và `...`
- 6. Sự khác biệt giữa. và #
- 7. Sự khác biệt giữa $ * và $ @
- 8. Sự khác biệt giữa ". +" Và ". +?"
- 9. Sự khác biệt giữa "**/* /" và "** /"?
- 10. Sự khác biệt giữa $ # và $ {# @}
- 11. Sự khác biệt giữa = và: =
- 12. Sự khác biệt giữa DisplayFor và ValueFor
- 13. Sự khác biệt giữa .Rprofile và .First
- 14. Sự khác biệt giữa sqrt và sqrtf
- 15. Sự khác biệt giữa sự khác biệt biểu tượng và sự khác biệt tự động?
- 16. Tính khác biệt giữa 2 ngày/lần trong Oracle SQL
- 17. Oracle kiểu dữ liệu timestamp
- 18. Sự khác biệt về sự khác biệt giữa Matplotlib giữa Agg và Cairo
- 19. Sự khác biệt giữa sự khác biệt giữa nhiệm vụ jar và lắp ráp
- 20. Sự khác biệt giữa Html.RenderAction và Html.Action
- 21. Sự khác biệt giữa cookie và phiên?
- 22. Sự khác biệt giữa '.' và "." trong java
- 23. Sự khác biệt giữa SimpleDB và S3
- 24. C++ - Sự khác biệt giữa (*). và ->?
- 25. Sự khác biệt giữa offsetHeight và clientHeight
- 26. Sự khác biệt giữa RDLC và SSRS
- 27. Sự khác biệt giữa "\ n" và Environment.NewLine
- 28. Sự khác biệt giữa qt và PyQt4
- 29. Sự khác biệt giữa AForge và OpenCV
- 30. Sự khác biệt giữa toFixed() và toPrecision()?
['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
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 :) –