【发布时间】:2012-10-08 23:29:53
【问题描述】:
我遇到了 Oracle Dates 的问题。插入 OracleDB 后,Java 应用程序中的预定义日期似乎有所不同。
通过 JPA 实体插入:
entity.setDateOfCreation(new Date(System.currentTimeInMillis()));
// 1350565985000
提交和检索后:
entity.getDateOfCreation() // 1350565985047
为什么会有所不同?
我假设 Oracle 只会将具有这些精确毫秒的特定日期对象插入到数据库中。但显然不是。由于最小的延迟,它似乎以毫秒为单位用自己的日期“覆盖”给定的日期(尽管我不使用@GeneratedValue)。
【问题讨论】:
-
你在哪里看到结束 85000 的时间?并且是
DATE或TIMESTAMP类型的数据库列? -
列类型为@Temporal(TemporalType.TIMESTAMP)
-
Oracle数据库中实际列的数据类型是什么? Oracle
DATE不存储毫秒——OracleDATE仅精确到秒。你有没有机会在你的问题中颠倒了 cmets?如果getDateOfCreation返回一个毫秒为 0 的值,而setDateOfCreation传入一个毫秒为单位的值,那么如果 Oracle 列的数据类型是DATE,这将是可以解释的。 -
请发布表格定义。谢谢。
-
@Justin:谢谢,你说得对,我两次都以毫秒为单位混淆了。末尾带有 000 的那个是我从数据库中读取的日期。我可以插入不带毫秒的日期吗?