Oracle DB に DATE 型の列があります。06.09.12 は、そこに格納されている値の 1 つです。また、タイプ java.util.Date のメンバ フィールド「date」を持つ、テーブルにマップされた EJB エンティティもあります。ただし、getter メソッドは、テーブルに格納されている日付に 1 日を加えた日付を返します (例: 06.09.12 ではなく 07.09.12)。保存されている日付を正確に取得するにはどうすればよいですか? タイムスタンプの使用を検討する必要がありますか?
質問する
688 次
1 に答える
2
タイムゾーンが異なる場合があります。DB のタイムゾーンは、Java で設定されたタイムゾーンとは異なります。基になる時間は実際には同じですが、たとえば、DB の日付は GMT で解釈され、Java は東部時間として解釈されます。GMT の真夜中を過ぎると、GMT は 1 日進み、7 時間程度になります。
これらのタイムゾーンは両方ともデフォルトでサーバーのタイムゾーンになりますが、DB インストールと Java VM によってオーバーライドできます。
これが当てはまるかどうかをテストするには、Oracle で次のようにします。
select dbtimezone,sessiontimezone from dual;
そしてJavaで:
TimeZone tz = Calendar.getInstance().getTimeZone();
System.out.println("TimeZone: "+tz.getDisplayName());
于 2012-09-11T06:25:06.117 に答える