Redshift jdbc driver getdate() returns time in server time zone instead of in UTC

0

The java code mentioned below was working fine with Redshift jdbc driver 1.2. But, now seeing erroneous behaviour with Redshift jdbc driver 2.1. Can anyone confirm whether a workaround is possible in this java code or whether this is a bug in the driver 2.1 itself?

Information about Java code

  • In a timestamp data-typed column, the value is inserted using "getdate()".
  • It is supposed to add time in UTC (without timezone information).
  • How the insert query is written:
connection.prepareStatement("INSERT INTO sampleTable (tsColumn, ...) VALUES (getdate(), ...)");

jdbc driver 1.2.41.1065 inserts correct date in UTC

jdbc driver 2.1.0.5 insertes date in PDT (server time zone) INCORRECT

Workaround attempted:

  • Attempted to modify getdate() part in the query as follows but it didn't work:
convert_timezone('UTC', getdate())

Questions

  • Is this a bug in the driver 2.1?
  • Is there any workaround/configuration/code-fix possible in the java code explained above?

Related

Hitesh
已提问 2 年前609 查看次数
1 回答
1

Hi Hitesh,

We decided this behavior because JDBC respect JVM timezone. You can set session timezone if you like to change using JVM system property user.timezone value.

Thank you.

AWS
已回答 2 年前
  • Thank you @aws-msharma. Need to evaluate that option. And what about "convert_timezone('UTC', getdate())". Shouldn't it give time in UTC? Does the expression need any correction? Any other workaround?

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则