【问题标题】:Date to datetime conversion in JPAJPA中的日期到日期时间转换
【发布时间】:2012-12-25 10:48:18
【问题描述】:

我看到存储在 Oracle DB 中的值是19-JAN-13。当我通过以下方式获得结果时:

List list1 = getEntityManager().createQuery(query).getResultList()

我看到的是 2013-01-19 07:03:49.0 而不是 2013-01-19 00:00:00.02013-01-19 23:59:59.9

我想知道为什么会这样?日期到日期时间的转换不应该默认时间为零吗?该行于 2013 年 1 月 1 日的时间 07:03:49.0 创建。

访问器定义为

@Column(name = "FREE_TRIAL_EXPIRY_DATE")
public Date getFreeTrialExpiryDate() {
    return freeTrialExpiryDate;
}
public void setFreeTrialExpiryDate(Date freeTrialExpiryDate) {
    this.freeTrialExpiryDate = freeTrialExpiryDate;
}

【问题讨论】:

  • 可能不好。省略了问题。

标签: java oracle datetime jpa jdbc


【解决方案1】:

其实OracleDate类型存储的是日期和时间的值。您的 Oracle 工具恰好只显示日期 DD-MM-YYYY 值。

您只需在 Java 应用程序中正确输出格式即可获得所需的 DD-MM-YYYY 表示。

底线是 Java 不构成时间值。

【讨论】:

    【解决方案2】:

    Oracle 始终保持时间,这就是它的方式。 Oracle 的 'DATE' 包括时间到秒,它不等同于永恒的 java.sql.Date。

    如果您希望该字段为无时间日期,则需要通过以下注释在应用程序级别指定截断:

    @Temporal(TemporalType.DATE)

    在实体上。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      相关资源
      最近更新 更多