小编Emi*_*lio的帖子

JDBC 插入 now() 与服务器时间戳不同

对于这个 PostgreSQL 测试表:

CREATE TABLE public.test (
  id BIGSERIAL,
  "datetime" TIMESTAMP WITHOUT TIME ZONE DEFAULT now(),
  value INTEGER,
  CONSTRAINT test_pkey PRIMARY KEY(id)
) 
Run Code Online (Sandbox Code Playgroud)

我正在使用这个 SQL 插入:

INSERT INTO it.test (value) VALUES (1);
Run Code Online (Sandbox Code Playgroud)

当我从 EMS 或 PgAdmin 等远程客户端执行 INSERT 时没有问题。字段 datetime 完全填充了服务器时间戳,但是当我使用 Postgres/JDBC 驱动程序 (postgresql-9.2-1002.jdbc4.jar) 从 Java 程序执行 INSERT 时,字段 datetime 填充了与服务器不同的时间戳。

我读到 JVM 使用本地 PC 时区。有什么办法可以避免这种情况吗?

如果我将数据类型从时间戳更改为时间戳z,java会用服务器时间戳填充该字段,但我想在不更改数据类型的情况下解决它,因为该表被其他程序和报告使用。

java postgresql timezone timestamp jdbc

4
推荐指数
1
解决办法
2163
查看次数

标签 统计

java ×1

jdbc ×1

postgresql ×1

timestamp ×1

timezone ×1