Home » Java » java.sql.Timestamp to Date Conversion in Oracle SQL

java.sql.Timestamp to Date Conversion in Oracle SQL

Posted by: admin October 29, 2018 Leave a comment

Questions:

I have run into this weird Timestamp to Date Conversion issue in Oracle SQL.

Here is the SQL statement:

String INSERT_SQL = String.format("INSERT INTO AUDIT_TASK (%s, %s, %s, %s) VALUES (AUDIT_TASK_SEQ.nextval,?,?,?)",ID,CLASS_NAME,TASK_STEP_TIMESTAMP,OPERATOR);

java.util.Calendar utcCalendarInstance = Calendar.getInstance(TimeZone .getTimeZone("UTC"));
java.util.Calendar cal = Calendar.getInstance();
final PreparedStatement stmt = con.prepareStatement(INSERT_SQL);
stmt.setString(1, audit.getClassName().getValue());
// Save the timestamp in UTC
stmt.setTimestamp(2,new Timestamp(cal.getTimeInMillis()), utcCalendarInstance);

When I execute this statement, while most of the times the creation_date and task_step_timestamp dates are same, but sometimes I get the task_step_timestamp generated with some bogus dates- like ’25-APR-0000′ or ’00-Jan-0001′ etc.

  • ID | Creation_date | Task_step_timestamp
  • 1 |27-APR-2018 17:58:53| 25-APR-0000 09:00:45
  • 2 |27-APR-2018 18:06:25| 00-Jan-0001 09:18:25

The data type of task_step_timestamp column in Oracle DB is ‘DATE’.

Can some one suggest the cause of this inconsistent conversion of timestamp to date?

Answers: