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.02013-01-19 23:59:59.9

なぜそうなのか知りたいのですが?date から datetime への変換は、デフォルトの時間をゼロにするべきではありませんか? 行は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 値のみを表示します。

目的の DD-MM-YYYY プレゼンテーションを行うには、Java アプリケーションで適切にフォーマットを出力する必要があります。

肝心なのは、Java が時間の値を構成していないということです。

于 2013-01-10T22:54:01.277 に答える
1

オラクルは常に時間を守ります。それがまさにその通りです。Oracle の 'DATE' には秒までの時間が含まれており、タイムレスな java.sql.Date とは異なります。

フィールドを時間のない日付にする場合は、次の注釈を付けて、アプリケーション レベルで切り捨てを指定する必要があります。

@Temporal(TemporalType.DATE)

エンティティ上。

于 2013-01-10T22:48:26.507 に答える