timestamp without time zone
我在 PostgreSQL 9.1 数据库的列中有这个日期:
2012-11-17 13:00:00
它是 UTC 格式的,我已经通过选择它作为 UNIX 时间戳 ( EXTRACT epoch
) 进行了验证。
int epoch = 1353157200; // from database
Date date = new Date((long)epoch * 1000);
System.out.println(date.toGMTString()); // output 17 Nov 2012 13:00:00 GMT
然而,当我使用 JPA/Hibernate 读取这个日期时,事情就出错了。这是我的映射:
@Column(nullable=true,updatable=true,name="startDate")
@Temporal(TemporalType.TIMESTAMP)
private Date start;
然而Date
,我得到的是:
17 Nov 2012 12:00:00 GMT
为什么会发生这种情况,更重要的是,我该如何阻止它?
请注意,我只想普遍地存储时间点(就像java.util.Date
那样),我不太关心时区,除了我显然不希望它们破坏我的数据。
正如您可能推断的那样,连接到数据库的客户端应用程序位于 UTC+1(荷兰)。
此外,列类型的选择timestamp without time zone
是由 Hibernate 在自动生成模式时做出的。应该是这样timestamp with time zone
吗?