如何在JDBC中使用CURRENT_TIMESTAMP(Oracle DB)

时间:2015-01-07 10:16:07

标签: oracle jdbc timestamp

在MY_TABLE中,当更新ORD_AMT字段时,LST_UPDT_TS也会更新为current_timestamp。由以下查询提供:

UPDATE MY_TABLE
SET ORD_AMT = 50, LST_UPDT_TS = CURRENT_TIMESTAMP
WHERE ORD_ID = 'ORD_123'

我需要通过JDBC代码实现这项业务,而我的Web服务器和数据库服务器是不同的时区。如果我将Date()。getTime()传递给JDBC,它是Web服务器的当前时间,但我需要DB服务器的当前时间。

有没有办法像这样传递CURRENT_TIMESTAMP:

preparedStatement = dbConnection.prepareStatement(updateOrderSql);
preparedStatement.setFloat(1, 50);
preparedStatement.setTimestamp(2, Timestamp.CURRENT_TIMESTAMP);
preparedStatement.setString(3, 'ORD_123');
preparedStatement.executeUpdate();

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

不是将当前时间戳参数传递给oracle,而是可以使用SYSTIMESTAMP,如下所示

UPDATE MY_TABLE
SET ORD_AMT = 50, LST_UPDT_TS = SYSTIMESTAMP
WHERE ORD_ID = 'ORD_123'

如果 FRONT END 服务器和 DB 服务器位于同一台机器上,最终两者可能相同,我指的是单层架构。如果没有,您可以将其强制转换为字符串,并使用 varchar2 数据类型将其存储在表格中。

答案 1 :(得分:0)

要使用JDBC更新 LST_UPDT_TS 字段,请使用以下代码:

preparedStatement.setTimestamp(2, new Timestamp(System.currentTimeMillis()));

您将在数据库更新的 LST_UPDT_TS 字段中看到。