使用休眠選擇時間戳字段獲取錯誤時間。使用休眠選擇時間戳字段獲取錯誤時間選擇
我們使用Hibernate框架和Postgres數據庫。
我們有一張表,它在數據類型TIMESTAMP WITH TIME ZONE的列中存儲'created_time'。
+------------------------------------------+
+ created_time +
+------------------------------------------+
+ 2014-09-22 04:30:00.756 +
+ -----------------------------------------+
假設我們有一個數據'2014年9月22日04:30:00.756' 在 'CREATED_TIME'。
我用下面的Hibernate查詢
query= "SELECT column1,column2,createdTime FROM TableName";
…
…
List<Object[]> dataList=selectQuery.list();
for(Object data[] : dataList)
{
System.out.println("Date and time -> "+data[2].toString()); //Time coming wrong here
}
當我去throught在DataList我發現日期是正確的到來,但時間是別的東西像'11:45:00.345'。
如果我在pgAdminIII中使用了相同的查詢,則表示它正確地進入。
但隨着休眠它錯了。
我甚至試過SQL查詢。我仍然面對錯誤的時間問題。
我沒有得到解決方案,當我搜索網絡。
正確。 Postgres將日期時間值轉換並存儲到UTC。默認情況下,檢索時會應用當前的默認時區,並將調整後的值返回給客戶端(pgAdmin)。由於時區信息未被存儲,'TIMESTAMP WITH TIME ZONE'是一個誤用。更好的名字應該是'TIMESTAMP WITH RESPECT FOR TIME ZONE'。因此,對於檢索指定您想要的時區,是UTC或本地[時區名稱](http://en.wikipedia.org/wiki/List_of_tz_database_time_zones)。 – 2014-09-22 17:33:00