oracle DATE和TIMESTAMP之间的区别


92

Oracle DATE和TIMESTAMP类型有什么区别?两者都有日期和时间部分吗?这些日期类型在Java中对应的类型是什么?


3
TIMESTAMP与相同DATE,除了增加了小数秒精度。
NullUserException

5
最大的不同是:DATE精确到秒,并且没有小数秒。TIMESTAMP有小数秒。秒的小数位数取决于服务器操作系统,例如,我的Windows 7计算机上的Oracle返回的时间戳小数点为三个小数,而客户端的大型Solaris框返回的小数为六个。时间戳记也可以保存特定时区,或归一化为通用时区-转到此处,然后搜索“ TIMESTAMP”以获取更多信息,然后尝试一下:)
Ed Gibbs

Answers:


98

DATE和TIMESTAMP具有相同的大小(7个字节)。这些字节用于存储世纪,十年,年,月,日,小时,分钟和秒。但是TIMESTAMP允许存储其他信息,例如小数秒(11个字节)和带时区的小数秒(13个字节)。

TIMESTAMP被添加为与Oracle兼容的ANSI。在此之前,它只有DATE。

通常,您应该使用DATE。但是,如果需要时间精度,请使用TIMESTAMP。

关于Java,Oracle JDBC驱动程序中的oracle.sql.DATE类提供了Oracle Date / Timestamp数据类型与Java类java.sql.Date,java.sql.Time和java.sql.Timestamp之间的转换。


1
提示:不幸的是,默认情况下,当您查询Oracle中的DATE列时,它仅返回“天”,但是如果将其转换为TO_TIMESTAMP(DATE_COLUMN_NAME),则返回的精度更高。不管怎样,jdbc / hibernate都不是默认值,至少在这里不是。
rogerdpack

6
“一般情况下,您应该使用DATE”-但是,为什么呢?
siledh 2013年

4
您应该使用TIMESTAMP WITH TIME ZONE。否则,夏令时会引入不明确的时间。
kmkaplan 2015年

15
我发现DATE类型包含TIME信息确实令人困惑。这个词不是这个意思。
Daddy32 '16

2
TIMESTAMP大约20年后添加了@ Daddy32 DATE。他们真的不能回去改变DATE
威廉·罗伯逊,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.