我把这样的签名存储功能:日期时间参数
功能ADDDAYS(市VARCHAR2, 的startDate DATE,NUMDAYS整数)
从Java代码:
JdbcTemplate jt = getJdbcTemplate();
Object o = jt.execute("{? = call ADDDAYS(?, ?, ?)}", new CallableStatementCallback() {
public Object doInCallableStatement(CallableStatement stmt) throws SQLException, DataAccessException {
stmt.registerOutParameter(1, Types.DATE);
stmt.setString(2, city);
stmt.setDate(3, new java.sql.Date(startDate.getTime()));
stmt.setInt(4, daysNum);
stmt.execute();
return new Date(stmt.getDate(1).getTime());
}
});
当我通过startDate与时间返回值contais 00:00作为时间(存储过程不削减时间部分,我检查它w直接从sql编辑器调用)。 所以看起来像时间部分在发送到/接收表格Oracle中被删除。 是否可以修复它? 谢谢。
我希望你意识到'ADDDAYS'函数正在重新发明车轮;在Oracle'DATE'或'TIMESTAMP'中添加一个数字可以将该天数(或其部分)添加到它。 – 2010-04-15 19:57:51
这不仅仅是将N天添加到指定的日期,它将针对不同的城市使用工作日日历。如果我只需要将N天添加到当前日期,为什么我需要将城市参数传递给此函数。 – dbf 2010-04-16 09:13:08