【发布时间】:2020-08-02 08:36:11
【问题描述】:
-
首先,我将从数据库中获取一个日期值作为输入变量。日期格式将采用 (2020-08-31) 格式。
-
我需要将这个日期转换成如下格式的 PL-SQL 块。
to_date('31082020','ddmmyyyy')
-
为了获得上述格式,我使用 java 进行了如下转换。
// Converting the date format for the required type for PL-SQL block SimpleDateFormat simpleDateFormat = new SimpleDateFormat("ddMMyyyy"); String modifiedDate = simpleDateFormat.format(processingDate); String modifiedDateParameter = "to_date(\'"+modifiedDate+"\','ddmmyyyy')"; -
现在我将把上面的 modifiedDateParameter 作为输入参数传递给我的 PL-SQL 块。代码如下。这里的 SQL 是我将要调用的过程。
callableStatement = conn.prepareCall(SQL); callableStatement.setDate(1,java.sql.Date.valueOf(billEndDate)); callableStatement.executeUpdate();
-
但是我得到了以下异常。
线程“主”java.lang.IllegalArgumentException 中的异常 在 java.sql/java.sql.Date.valueOf(Date.java:141)
请问我需要如何修改才能解决此问题?
【问题讨论】:
-
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDate。
标签: java exception plsql date-format plsql-package