情况就是这样。我们有一个AWS服务器,在那里我们将为我们的客户(他们基本上来自世界各地)部署应用程序。对于我们的应用程序,我们使用postgresql数据库、Java7、ibatis。对于每个客户,我们将有一个单独的postgres数据库(Ex:- database_cust1,database_cust2等)分离战争档案。
所以问题是:-我们正面临着时区的问题,因为客户来自世界各地。因此,假设我们有两个客户--美国和印度,我们确保美国人按照他的时区时间和印度人的时区时间进行观看/修改。我们尝试通过使用查询在postgres db中设置时区格式来解决这个问题。
ALTER american_db SET timezone=‘America/Los’;
这是很好的工作,因为我已经插入到表中的数据是存储在按照美国时间标准。但是,在从java(ibatis)检索相同的数据时,我们得到的是服务器时间,而不是在美国/洛杉矶的时间。我试过在网上搜索,但没有一种解决方案奏效。提前谢谢。
发布于 2018-02-17 14:29:56
数据库将时间戳存储为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:30https://stackoverflow.com/questions/48840414
复制相似问题