在重新读取Postgresql Timestamptz数据时,与Java发行



这是情况。我们有一个AWS服务器,我们将在其中为客户部署应用程序(基本上来自世界各地(。我们正在使用PostgreSQL数据库,Java7,Ibatis进行应用。对于每个客户,我们将拥有一个单独的Postgres数据库(例如:-Database_cust1,database_cust2等(并分开战争文件。

所以这是一个问题: - 当客户来自世界各地时,我们正面临时区的问题。因此,假设我们有2个美国和印度人,我们确保美国人根据他的时区和印度人的观看/修改。我们尝试通过使用查询

在Postgres DB中设置时区格式来修复此操作。

ALTER数据库American_DB设置TimeZone ='America/LOS_ANGELES';

这效果很好,因为我插入的数据按照美国时间标准存储在桌子上。但是,在从Java(IBATIS(中检索相同的数据时,我们正在获得服务器时间,但没有在美国/los_angeles的时间。我曾尝试在线搜索,但是解决方案都没有奏效。预先感谢。

数据库将TimestAmptz存储为UTC中的时间戳,并自动将其从连接时区转换为连接时区。如果使用alter database设置数据库时区,则将视为用于连接客户端的默认连接时区。但是,有些客户将自动将连接时区设置为其操作系统时区,而忽略数据库默认值。

如果您希望数据库可以自动转换到某个选择的时区,这与客户端的操作系统时区不同,则应在建立与数据库的连接后立即发布set timezone='America/Los_Angeles'命令。一些程序允许在配置数据库凭据时设置此问题 - 我不知道IBATIS/MYBATIS。

=> set timezone='America/New_York';
=> select '2018-02-17 15:17+01'::timestamptz;
 2018-02-17 09:17:00-05
=> set timezone='Asia/Kolkata';
=> select '2018-02-17 15:17+01'::timestamptz;
 2018-02-17 19:47:00+05:30

相关内容

  • 没有找到相关文章

最新更新