我所处的时区是GMT+1,我有一个UTC时间戳(11:12:56)存储在一个long
变量中。
long ts = 1487157176450;
我从这个时间戳初始化了一个java.sql.Timestamp
。
Timestamp timestamp = new Timestamp(ts);
然后,我使用jOOQ将这个时间戳插入到PostgreSQL(v9.4)数据库中。
create.insertInto(TABLE,
TABLE.NAME, TABLE.TS)
.values("Foo bar", timestamp);
然而,当我记录实际执行的SQL命令时,我看到了这个:
< 2017-02-15 10:50:37.326 CET >LOG: execute <unnamed>: insert into "database"."table" ("name", "ts") values ($1, cast($2 as timestamp))
< 2017-02-15 10:50:37.326 CET >DETAIL: parameters: $1 = 'Foo bar', $2 = '2017-02-15 12:12:56.450'
我不确定时间戳何时被转换为本地时间,但除非pgAdmin是在撒谎,否则我实际上在数据库中存储的是GMT+1时间戳,而不是我原本想要的UTC。
现在,由于我没有使用JDBC,所以链接问题的答案并没有帮助。我该如何使jOOQ存储正确的时间戳?
cast($2 as timestamptz)
。 - Vao Tsun