为什么在PostgreSQL 12中使用JDBC时,current_time与current_timestamp和now()都不同?

问题描述 投票:0回答:1

当我在PgAdmin4或psql中运行下面的查询时,我得到了相同的值。current_time, now()current_timestamp:

SELECT now(), CURRENT_TIME, CURRENT_TIMESTAMP;
              now              |    current_time    |       current_timestamp
-------------------------------+--------------------+-------------------------------
 2020-04-27 11:54:55.443006+01 | 11:54:55.443006+01 | 2020-04-27 11:54:55.443006+01

但是,当我在DBeaver中使用JDBC驱动程序连接到同一个PostgreSQL数据库,运行同样的查询时,出现了以下情况 差异 之间 current_timenow() (和 current_timestamp):

now                |current_time|current_timestamp  |
-------------------|------------|-------------------|
2020-04-27 12:57:00|    11:57:00|2020-04-27 12:57:00|

很明显,JDBC驱动在某种程度上造成了两者之间的矛盾 current_timecurrent_timestamp.

我的问题。

  • 这是JDBC驱动的预期行为吗?(为什么?)
  • 有没有办法通过JDBC驱动本身的一些配置来控制这种行为,而不需要修改依赖JDBC驱动的应用程序和查询?
postgresql jdbc time
1个回答
1
投票

current_time 是一个 time WITH time zone JDBC不支持的东西。

应用程序需要采取特殊的步骤来正确检索该值。所以,是的,这在某种程度上是可以预期的。我想DBEaver使用的是 getTime() 它将时间返回为UTC

这也是使用的原因之一。current_time 不气馁

© www.soinside.com 2019 - 2024. All rights reserved.