1

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

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

我看到一个值2013-01-19 07:03:49.0而不是2013-01-19 00:00:00.0or 2013-01-19 23:59:59.9

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

访问器定义为

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

2 回答 2

2

实际上,Oracle Date类型存储日期和时间的值。您的 Oracle 工具恰好只显示日期 DD-MM-YYYY 值。

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

底线是 Java 没有弥补时间价值。

于 2013-01-10T22:54:01.277 回答
1

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

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

@Temporal(TemporalType.DATE)

在实体上。

于 2013-01-10T22:48:26.507 回答