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
asked 2 years ago595 views
1 Answer
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
answered 2 years ago
  • 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?

You are not logged in. Log in to post an answer.

A good answer clearly answers the question and provides constructive feedback and encourages professional growth in the question asker.

Guidelines for Answering Questions