我正在使用 postgresql 在数据库中存储一些日期。
在我的应用程序中,它完全了解时区是基本的,并且我在客户端、服务器和数据库之间进行了一些基本测试。
我正在从我在 GWT 中执行的浏览器应用程序发送日期,并在 postgresql 上读取日期。
我的测试:
客户总是在 GMT 时区,我总是为每个案例发送相同的日期。
2012 年 13 月 4 日 00:00:00 GMT+00
在 posgres 上,我正在更改每个测试的时区。在测试之间,我从表中删除所有日期。
要更改 posgres 上的时区,我在 {PostgreSQL HOME}\9.1\data\postgresql.conf 上将 timezene 设置为我想要的时间。
测试:客户端:13/04/2012 00:00:00 GMT+00
第一次测试 - posgres EST - 12/04/2012 19:00:00-05 根据postgresql 文档EST = GMT - 5
第二次测试 - posgres GMT + 5 - 12/04/2012 19:00:00-05
第三次测试 -后格林威治标准时间 - 5 - 13/04/2012 05:00:00+05
现在我的问题出现了:根据文档,EST = GMT - 5。那我为什么要反过来读呢?我在这里错过了什么吗?
编辑
我的测试的技术方面:
在客户端我发送这个:2012 Apr 13 00:00:00 GMT+00。
在服务器上,我使用 JDBC 在数据库上写入:
将 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); ...
作为记录,这只是我想理解的,因为总的来说它对我的目的很有效..