【问题标题】:Storing joda-time datetime in database在数据库中存储 joda-time 日期时间
【发布时间】:2011-04-11 09:06:34
【问题描述】:

我的应用程序已经使用 Joda-time 进行日期操作,并计划在不久的将来升级到 jsr 310。

现在我需要使用 jpa 2 和休眠在数据库中存储非常准确的时间戳,但 java.util.Date 没有存储毫秒值。

我找到了UserType,并像这样配置了我的 entitybean

    @Column( name = "TRANSACTION_TIME" )
@Type(type="org.jadira.usertype.dateandtime.joda.PersistentDateTime")
private DateTime transactionTime;

但它仍然不存储毫秒数。

我传递了这个2010-11-02 12:02:54.945,但当我检索到它时,它是2010-11-02 12:02:54.000

我还需要做什么才能存储毫秒数和时区?

更新 我刚刚检查过,毫秒实际上进入了数据库,但 Hibernate 没有将它包含在返回的结果中。相同的格式化程序打印了两个结果,所以它不会是格式化问题

【问题讨论】:

  • 一些数据存储根本不将毫秒存储在 DATETIME 列中。使用大数字将其存储为数字

标签: java datetime jpa jodatime


【解决方案1】:

这可能不是您想要的,但您可以将时间存储为数字(=自纪元以来的毫秒数)而不是日期时间字段。

【讨论】:

  • +1 long 为您提供精确度,易于映射,并且时区无论如何都应该存储在其他地方。
【解决方案2】:

Oracle DATE 数据类型不存储小数秒。您需要使用 TIMESTAMP 或之前建议的数字列。见:http://knol.google.com/k/oracle-date-and-time-data-types

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2012-04-21
    • 2014-03-24
    • 1970-01-01
    • 2011-04-17
    • 2021-09-27
    • 2017-05-31
    • 2017-01-11
    • 2014-01-04
    相关资源
    最近更新 更多