使用休眠选择时间戳字段获取错误时间。使用休眠选择时间戳字段获取错误时间选择
我们使用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