java.sql.SQLDataException: 在 Weblogic 中部署时出现 ORA-01843
java.sql.SQLDataException: ORA-01843 while deploying in Weblogic
我正在尝试对我的 oracle 数据库执行 select 操作。我将查询保存在我的应用程序的 属性 文件中,如下所示:
SELECT EMPLOYEE FROM EMPLOYEETABLE WHERE
JOINING_DATETIME >= ?
JOINING_DATETIME
是 oracle db 中的时间戳列,其值类似于 04-03-20 07:12:27.150000000 PM
我从我的应用程序 04-03-20 05:41:52 PM
中以字符串的形式提供 JOINING_DATETIME
的值,它工作得很好,并且在 [=28= 中的 运行 时按预期进行了必要的操作] 服务器。
但问题是当同样的部署到 Weblogic 应用程序时我收到错误:
java.sql.SQLDataException: ORA-01843: not a valid month
有人可以帮我解决这个问题吗?
您需要在查询中使用正确的格式将 string
转换为 timestamp
,如下所示:
SELECT EMPLOYEE
FROM EMPLOYEETABLE
WHERE JOINING_DATETIME >= TO_TIMESTAMP(?,'DD-MM-RR HH:MI:SS.FF AM');
更新:
关于您对AM/PM
的疑问:
SQL> select TO_TIMESTAMP('04-03-20 07:12:27.150000000 PM','DD-MM-RR HH:MI:SS.FF AM') from dual;
TO_TIMESTAMP('04-03-2007:12:27.150000000PM','DD-MM-RRHH:MI:SS.FFAM')
---------------------------------------------------------------------------
04-MAR-20 07.12.27.150000000 PM
SQL> select TO_TIMESTAMP('04-03-20 07:12:27.150000000 AM','DD-MM-RR HH:MI:SS.FF AM') from dual;
TO_TIMESTAMP('04-03-2007:12:27.150000000AM','DD-MM-RRHH:MI:SS.FFAM')
---------------------------------------------------------------------------
04-MAR-20 07.12.27.150000000 AM
SQL>
将 JOINING_DATETIME
的值作为 java.sql.Timestamp
而不是字符串提供。
我正在尝试对我的 oracle 数据库执行 select 操作。我将查询保存在我的应用程序的 属性 文件中,如下所示:
SELECT EMPLOYEE FROM EMPLOYEETABLE WHERE
JOINING_DATETIME >= ?
JOINING_DATETIME
是 oracle db 中的时间戳列,其值类似于 04-03-20 07:12:27.150000000 PM
我从我的应用程序 04-03-20 05:41:52 PM
中以字符串的形式提供 JOINING_DATETIME
的值,它工作得很好,并且在 [=28= 中的 运行 时按预期进行了必要的操作] 服务器。
但问题是当同样的部署到 Weblogic 应用程序时我收到错误:
java.sql.SQLDataException: ORA-01843: not a valid month
有人可以帮我解决这个问题吗?
您需要在查询中使用正确的格式将 string
转换为 timestamp
,如下所示:
SELECT EMPLOYEE
FROM EMPLOYEETABLE
WHERE JOINING_DATETIME >= TO_TIMESTAMP(?,'DD-MM-RR HH:MI:SS.FF AM');
更新:
关于您对AM/PM
的疑问:
SQL> select TO_TIMESTAMP('04-03-20 07:12:27.150000000 PM','DD-MM-RR HH:MI:SS.FF AM') from dual;
TO_TIMESTAMP('04-03-2007:12:27.150000000PM','DD-MM-RRHH:MI:SS.FFAM')
---------------------------------------------------------------------------
04-MAR-20 07.12.27.150000000 PM
SQL> select TO_TIMESTAMP('04-03-20 07:12:27.150000000 AM','DD-MM-RR HH:MI:SS.FF AM') from dual;
TO_TIMESTAMP('04-03-2007:12:27.150000000AM','DD-MM-RRHH:MI:SS.FFAM')
---------------------------------------------------------------------------
04-MAR-20 07.12.27.150000000 AM
SQL>
将 JOINING_DATETIME
的值作为 java.sql.Timestamp
而不是字符串提供。