我正在使用 postgresql 在数据库中存储一些日期。
在我的应用程序中,它完全了解时区是至关重要的,我正在客户端、服务器和数据库之间进行一些基本测试。
我从 GWT 中执行的浏览器应用程序发送日期,并读取 postgresql 上的日期。
我的测试:
客户端始终处于 GMT 时区,并且我始终为每种情况发送相同的日期。
13/04/2012 00:00:00 GMT+00
在 postgres 上,我正在更改每次测试的时区。在测试之间我将从表中删除所有日期。
要更改 postgres 上的时区,我在 {PostgreSQL HOME}\9.1\data\postgresql.conf 中将时区设置为我想要的时区。
测试:
客户: 13/04/2012 00:00:00 GMT+00
第一次测试 - postgres EST - 12/04/2012 19:00:00-05
根据PostgreSQL 文档 http://www.postgresql.org/docs/7.2/static/timezones.html美国东部时间 = 格林尼治标准时间 - 5
第二次测试 - postgres GMT + 5 - 12/04/2012 19:00:00-05
第三次测试 - postgres GMT - 5 - 13/04/2012 05:00:00+05
现在我的问题出现了:根据文档,EST = GMT - 5。那么为什么我要以相反的方式阅读它呢?
我在这里错过了什么吗?
EDIT我的测试的技术方面:
在客户端上,我发送:2012 年 4 月 13 日 00:00:00 GMT+00。
在服务器上,我使用 JDBC 在数据库上写入:
将 java.utils.date 转换为
java.sql.时间戳
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); ...
根据记录,这只是我想了解的内容,因为总的来说它非常适合我的目的。