ความแตกต่างระหว่าง Oracle DATE และ TIMESTAMP


92

Oracle DATE และ TIMESTAMP ต่างกันอย่างไร ทั้งสองมีองค์ประกอบวันที่และเวลา? ประเภทที่สอดคล้องกันใน Java สำหรับประเภทวันที่เหล่านี้คืออะไร?


3
TIMESTAMPเหมือนกับDATEยกเว้นว่าได้เพิ่มความแม่นยำของเศษส่วนวินาที
NullUserException

5
ความแตกต่างที่ใหญ่ที่สุด: DATEแม่นยำกับวินาทีและไม่มีเศษส่วนของวินาที TIMESTAMPมีเศษเสี้ยววินาที จำนวนตำแหน่งทศนิยมในวินาทีขึ้นอยู่กับระบบปฏิบัติการของเซิร์ฟเวอร์ตัวอย่างเช่น Oracle บนเครื่อง Windows 7 ของฉันส่งคืนทศนิยมสามตำแหน่งสำหรับการประทับเวลาในขณะที่กล่อง Solaris ขนาดใหญ่ของไคลเอ็นต์จะส่งกลับหก การประทับเวลายังสามารถกำหนดเขตเวลาที่เฉพาะเจาะจงหรือทำให้เป็นเขตเวลาปกติได้ - ไปที่นี่แล้วค้นหา "TIMESTAMP" เพื่อดูข้อมูลเพิ่มเติมจากนั้นทดลองเล็กน้อย :)
Ed Gibbs

คำตอบ:


98

DATE และ TIMESTAMP มีขนาดเท่ากัน (7 ไบต์) ไบต์เหล่านั้นใช้ในการจัดเก็บศตวรรษทศวรรษปีเดือนวันชั่วโมงนาทีและวินาที แต่ TIMESTAMP อนุญาตให้จัดเก็บข้อมูลเพิ่มเติมเช่นวินาทีเศษส่วน (11 ไบต์) และวินาทีเศษด้วยเขตเวลา (13 ไบต์)

เพิ่ม TIMESTAMP เป็น ANSI ที่สอดคล้องกับ Oracle ก่อนหน้านั้นมีเฉพาะ DATE เท่านั้น

โดยทั่วไปคุณควรใช้ DATE แต่ถ้าต้องการความแม่นยำในเวลาให้ใช้ TIMESTAMP

และเกี่ยวกับ Java คลาส oracle.sql.DATE จากไดรเวอร์ Oracle JDBC ให้การแปลงระหว่างชนิดข้อมูล Oracle Date / Timestamp และคลาส Java java.sql.Date, java.sql.Time และ java.sql.Timestamp


1
คำเตือน: น่าเสียดายที่ตามค่าเริ่มต้นเมื่อคุณค้นหาคอลัมน์ DATE ใน Oracle จะส่งคืนคุณเฉพาะ "วัน" แต่ถ้าคุณส่งเช่น TO_TIMESTAMP (DATE_COLUMN_NAME) จะส่งคืนความแม่นยำให้คุณมากขึ้น ซึ่งไม่เป็นค่าเริ่มต้นกับ jdbc / hibernate อย่างน้อยก็ไม่ได้อยู่ที่นี่
rogerdpack

6
"ในกรณีทั่วไปคุณควรใช้ DATE" แต่ทำไมล่ะ?
siledh

4
คุณควรใช้TIMESTAMP WITH TIME ZONE. มิฉะนั้นเวลาออมแสงจะทำให้เกิดเวลาที่ไม่ชัดเจน
kmkaplan

15
ฉันคิดว่ามันสับสนจริงๆประเภท DATE มีข้อมูล TIME นั่นไม่ใช่ความหมายของคำ
Daddy32

3
@ Daddy32 TIMESTAMPถูกเพิ่มเข้ามาประมาณ 20 ปีหลังจากDATEนั้น พวกเขาไม่สามารถย้อนกลับไปเปลี่ยนแปลงDATEได้จริงๆ
William Robertson
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.