从java代码调用存储函数时的DateTime参数

发布于 2024-08-28 19:01:23 字数 857 浏览 4 评论 0原文

我用这样的签名调用存储的函数:

函数添加日期(城市 VARCHAR2, 开始日期 DATE,numDays INTEGER)

来自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时,时间返回值包含00:00作为时间(存储过程不会削减时间部分,我通过sql编辑器的直接调用检查它)。 所以看起来时间部分在发送到/接收 Oracle 时被删除了。 可以修复吗? 谢谢。

I call stored function with such signature:

FUNCTION ADDDAYS (city VARCHAR2,
startDate DATE, numDays INTEGER)

from java code:

        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());
            }

        });

when I pass startDate with time return value contais 00:00 as time (stored procedure doesn't cut time part, i checked it with direct calls from sql editor).
So looks like time part is removed in sending to/receiving form Oracle.
is it possible to fix it?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

清晨说晚安 2024-09-04 19:01:23

java.sql.Date 旨在仅存储日期而不存储时间信息。
您应该使用 java.sql.Timestamp、setTimestamp 和 getTimestamp 来处理日期和时间。时间信息。
如果您只需要时间信息,另请参阅java.sql.Timeset/getTime

java.sql.Date is meant to store only date without time information.
You should use java.sql.Timestamp, setTimestamp and getTimestamp to handle date & time informations.
Look also at java.sql.Time and set/getTime if you need only time information.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文