PostgreSQL 9.1时区

Nun*_*ves 2 postgresql timezone datetime jdbc

我正在使用postgresql在数据库上存储一些日期.
在我的应用程序中,它是完全了解时区的基础,我正在进行一些基本的测试,在客户端,服务器和数据库之间.

我从浏览器的应用程序中发送日期,我在GWT中读取了postgresql上的日期.

我的测试:

客户端始终处于GMT时区,我每个案例的发送时间总是相同.
13/04/2012 00:00:00 GMT + 00

在posgres我正在改变每个测试的时区.在测试之间,我正在从表中删除所有日期.

要更改posgres上的时区,我在{PostgreSQL HOME}\9.1\data\postgresql.conf上设置timezene到我想要的时间.

测试:客户:13/04/2012 00:00:00 GMT + 00

第1次测试 - posgres EST - 12/04/2012 19:00:00-05根据postgresql文档 EST = GMT - 5
第2次测试 - posgres GMT + 5 - 12/04/2012 19:00:00-05
第3次测试 - posgres GMT - 5 - 13/04/2012 05:00:00 + 05

现在我的问题上升了:根据文档,EST = GMT - 5.那么为什么我会以相反的方式阅读呢?我在这里错过了什么吗?

编辑 我测试的技术方面:
在客户端我发送此信息:2012年4月13日00:00:00 GMT + 00.
在服务器上我使用JDBC在db上编写:
将java.utils.date转换为java.sql.timestamp

java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp(date.getTime());
(日期是来自客户端的java.utils.Date)

设置准备好的声明
PreparedStatement ps = con.prepareStatement("INSERT INTO teste.dates (dates_tz, dates_ntz) VALUES (?, ?);"

ps.setTimestamp(1,sqlTimeStamp); ...

为了记录,这只是我想要理解的东西,因为总的来说它适用于我的目的..

Dan*_*ité 11

请考虑文档中的警告:

另外要记住的一个问题是,在POSIX时区名称中,正偏移用于格林威治以西的位置.在其他地方,PostgreSQL遵循ISO-8601惯例,正面时区偏移位于格林威治以东.

看起来你所看到的GMT的相反迹象恰恰就是这种分歧的影响.postgresql.conf中指定的时区可能是用POSIX规则解释的,但后来SQL显示了ISO-8601规则(任何人真正使用的规则).