【问题标题】:Difference between oracle DATE and TIMESTAMPoracle DATE 和 TIMESTAMP 的区别
【发布时间】:2013-10-09 01:54:21
【问题描述】:

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

【问题讨论】:

  • TIMESTAMPDATE 相同,只是增加了小数秒精度。
  • 最大区别:DATE 精确到秒,没有小数秒。 TIMESTAMP 有小数秒。秒中的小数位数取决于服务器操作系统,例如,我的 Windows 7 机器上的 Oracle 为时间戳返回三位小数,而客户端的巨大 Solaris 框返回六位。时间戳也可以保存特定的时区或标准化为通用时区 - 转到here,然后搜索“TIMESTAMP”以获取更多信息,然后进行一些实验:)

标签: oracle jdbc oracle11g


【解决方案1】:

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

TIMESTAMP 作为符合 ANSI 的 Oracle 添加。在此之前,它只有 DATE。

在一般情况下,您应该使用 DATE。但如果需要时间精度,请使用 TIMESTAMP。

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

【讨论】:

  • 一句警告:不幸的是,默认情况下,当您在 Oracle 中查询 DATE 列时,它只返回“天”,但如果您将其转换为 TO_TIMESTAMP(DATE_COLUMN_NAME) 那么它会为您带来更高的精度。不知何故,这不是 jdbc/hibernate 的默认设置,至少它不在这里。
  • “在一般情况下,您应该使用 DATE”——但为什么?
  • 你应该使用TIMESTAMP WITH TIME ZONE。否则夏令时会引入不明确的时间。
  • 我觉得这很令人困惑,DATE 类型包含 TIME 信息。这不是这个词的意思。
  • @Daddy32 TIMESTAMP 是在 DATE 大约 20 年后添加的。他们真的不能回去改变DATE
【解决方案2】:

Oracle 中日期时间数据类型的说明:

及配套功能:

【讨论】:

  • 你为什么在你的帖子中使用这么多插图而不是写出来?
  • @mast 因为这是我想要做的 - 说明问题/解决方案。这就是人类习惯的——图片。它很自然,更容易记住。
  • @MarcinBadtke 非常感谢您的努力!
猜你喜欢
  • 2016-04-21
  • 2023-01-10
  • 2013-12-04
  • 2010-12-12
  • 1970-01-01
  • 2015-01-10
  • 2011-04-25
  • 2015-07-23
  • 2018-09-23
相关资源
最近更新 更多