2012-09-11 123 views
0

我在Oracle數據庫中有一個DATE類型的列。 06.09.12是存儲在那裏的值之一。我還有一個映射到表的EJB實體,它有一個類型爲java.util.Date的成員字段「date」。但是,getter方法返回表中存儲的日期加上一天,例如, G。 07.09.12而不是06.09.12。我怎樣才能得到確切的日期存儲?我應該考慮使用時間戳嗎?Oracle日期和EJB日期

+0

你怎麼retreiving從DB的日期? –

+1

DB中的日期是否模仿時區? (什麼是NLS_DATE_FORMAT值?)。你運行java代碼的機器上的用戶時區值是多少? – aviad

+0

謝謝,這個問題與不同的時區有關 – gisly

回答

2

您可能有不同的時區 - 數據庫上的時區與Java中設置的時區不同。底層時間實際上是相同的,但是,例如,數據庫上的日期以GMT和Java解釋爲東部時間。格林威治標準時間午夜後,格林威治標準時間提前一天,時間爲7小時左右。

這兩個時區默認爲服務器的時區,但可以由數據庫安裝和Java VM覆蓋。

爲了測試是否是這種情況,在Oracle:

select dbtimezone,sessiontimezone from dual; 

,提供Java:

TimeZone tz = Calendar.getInstance().getTimeZone(); 
System.out.println("TimeZone: "+tz.getDisplayName());