GMT + 1 시간대에 있고 long
변수에 UTC 시간 소인 (11:12:56)이 있습니다.UTC 타임 스탬프 -> java.sql.Timestamp -> jOOQ -> 로컬 타임 스탬프 in postgreSQL?
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 거짓말, 나는 실제로 내가 원하는 UTC 대신 데이터베이스에 GMT + 1 타임 스탬프를 저장합니다.
이제 JDBC를 사용하지 않으므로 연결된 질문에 대한 대답은 도움이되지 않습니다. jOOQ가 올바른 타임 스탬프를 저장하도록하려면 어떻게해야합니까?
클라이언트에 대해 시간대를 UTC로 설정하거나 캐스트를 명시 적으로 사용할 수 있습니다. –
JDBC 사양에서는 1) 명시 적으로 지정하지 않는 한 JVM 기본 시간대에서 타임 스탬프를 보내야합니다. 올바른 시간대로'Calendar '를 전달하고, 2) 특정 시간대가있는 열에 삽입하고, 3)'java.time.OffsetDateTime'을 사용합니다. –