在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();
感谢您的帮助。
答案 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 字段中看到。