不是有效的月份,而是数字数据类型 Java-Oracle
Not a valid month but Number datatype Java-Oracle
我尝试通过Java从数据库Oracle中收集一些信息。
我执行的字符串是:
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=? ";
try (PreparedStatement pst=connection.prepareStatement(sql)
{
pst.setInt(1,Integer.parseInt(stringDateThatGetsFromUser))
try(ResultSet rs=pst.executeQuery()){ //throws exception
.......
}}
抛出的异常是
java.sql.SQLDataException: ORA-01843: not a valid month
Caused by: Error : 1843, Position : 1440, Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1 , OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?, Error Msg = ORA-01843: not a valid month
我设置的参考月份示例是“202101”。在 Oracle 中,它是 NUMBER(10) 数据类型而不是 DATE。
我也尝试按照其他 post 在 'not valid month' 上的建议执行。
connection.createStatement().execute("alter session set NLS_DATE_FORMAT='YYYYMM'");
异常改为:
Caused by: Error : 1858, Position : 1440, Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1 , OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?, Error Msg = ORA-01858: a non-numeric character was found where a numeric was expected
我也尝试过 TO_NUMBER(?,'999999') 和 setString。与之前的错误相同。
当我通过 Oracle 执行以下命令时,它运行正常。
SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='202101';
***更新
我不知道为什么,但这通过 Java 起作用,但结果为零。
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='20210101'";
案件结案。我们发现了错误。对于两列中的某些值,数据库中 table 的 sql 代码未正确修改。
我尝试通过Java从数据库Oracle中收集一些信息。
我执行的字符串是:
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=? ";
try (PreparedStatement pst=connection.prepareStatement(sql)
{
pst.setInt(1,Integer.parseInt(stringDateThatGetsFromUser))
try(ResultSet rs=pst.executeQuery()){ //throws exception
.......
}}
抛出的异常是
java.sql.SQLDataException: ORA-01843: not a valid month
Caused by: Error : 1843, Position : 1440, Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1 , OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?, Error Msg = ORA-01843: not a valid month
我设置的参考月份示例是“202101”。在 Oracle 中,它是 NUMBER(10) 数据类型而不是 DATE。
我也尝试按照其他 post 在 'not valid month' 上的建议执行。
connection.createStatement().execute("alter session set NLS_DATE_FORMAT='YYYYMM'");
异常改为:
Caused by: Error : 1858, Position : 1440, Sql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=:1 , OriginalSql = SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH=?, Error Msg = ORA-01858: a non-numeric character was found where a numeric was expected
我也尝试过 TO_NUMBER(?,'999999') 和 setString。与之前的错误相同。
当我通过 Oracle 执行以下命令时,它运行正常。
SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='202101';
***更新
我不知道为什么,但这通过 Java 起作用,但结果为零。
String sql="SELECT * FROM SAP_PHOTOVOLTAIC WHERE REF_MONTH='20210101'";
案件结案。我们发现了错误。对于两列中的某些值,数据库中 table 的 sql 代码未正确修改。