我看到存储在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;
}
实际上,Oracle Date类型存储的是日期和时间的值。您的Oracle工具碰巧只显示日期DD-MM-YYYY值。
您只需在Java应用程序中正确输出格式,即可获得所需的DD-MM-YYYY表示。
Oracle总是保持时间,这就是它的方式。Oracle的'DATE'包含时间到秒,它不等同于无时间的java.sql.Date.
如果您希望字段是一个无时间日期,那么您需要在应用程序级别通过注释
来指定截断 @Temporal(TemporalType.DATE)