我正在使用postgresql在数据库中存储一些日期。
在我的应用程序中,它是完全了解时区的基础,并且我正在进行一些基本的测试,包括客户端,服务器和数据库。PostgreSQL 9.1时区
我从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
第一测试 - posgres EST - 12/04/2012 19:00:00-05 根据postgresql documentation EST = GMT - 5
第二测试 - posgres GMT + 5 - 12/04/2012 19:00:00-05
第三测试 - posgres GMT - 5 - 05 13/04/2012:00:00 + 05
现在我的问题出现了:根据文档,EST = GMT - 5。那么为什么我会以相反的方式阅读它? 我在这里错过了什么吗?
编辑 我的测试技术方面:
在客户端我送这样的:2012年04月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); ...
根据记录,这只是我想明白了,因为总体而言,它很适合我的目的..
请显示您的测试中使用的实际陈述。 – 2012-04-13 11:47:34
在客户端我发送这个:2012年4月13日00:00:00。 在使用JDBC写在db上的服务器上: java.sql.Timestamp sqlTimeStamp = new java.sql.Timestamp(date.getTime()); (日期为来自客户端的java.utils.Date) INSERT INTO dbFoo.dates_table(date_tz)VALUES(?); ps.setTimestamp(1,sqlTimeStamp); – 2012-04-13 13:10:45
请编辑您的问题,而不是将信息放入评论。这比较容易阅读。 – 2012-04-13 13:13:38