我将Oracle DB中存储的值视为19-JAN-13
。当我通过以下结果得到结果时:
List list1 = getEntityManager().createQuery(query).getResultList()
我看到的值为2013-01-19 07:03:49.0
,而不是2013-01-19 00:00:00.0
或2013-01-19 23:59:59.9
。
我想知道为什么会这样?不应该将date到datetime的默认时间转换为零吗?该行于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;
}
答案 0 :(得分:2)
实际上,Oracle Date类型存储了日期和时间的值。您的Oracle工具恰好只显示日期DD-MM-YYYY值。
您只需在Java应用程序中正确输出格式,即可获得所需的DD-MM-YYYY演示文稿。
底线是Java没有弥补时间值。
答案 1 :(得分:1)
Oracle始终会保留时间,这就是它的方式。 Oracle的'DATE'包含到第二个的时间,它不等同于永恒的java.sql.Date。
如果您希望该字段为无时间日期,则需要在应用程序级别通过以下方式指定截断:
@Temporal(TemporalType.DATE)
在实体上。