Caused by: java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配

简介:

          项目中遇到这样一个问题:        

        Caused by:java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配

atoracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)

atoracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)

atoracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)

atoracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)

atoracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:213)

atoracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:796)

atoracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1031)

atoracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:836)

atoracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1124)

atoracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)

atoracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStatement.java:3390)

atcom.ibatis.sqlmap.engine.execution.SqlExecutor.executeQuery(SqlExecutor.java:185)

atcom.ibatis.sqlmap.engine.mapping.statement.MappedStatement.sqlExecuteQuery(MappedStatement.java:221)

atcom.ibatis.sqlmap.engine.mapping.statement.MappedStatement.executeQueryWithCallback(MappedStatement.java:189)

...43 more

这个问题的解决方案其实很简单,但是一开始过于着急,导致调试时间加长,这是在项目的导出功能中遇到的问题,当输入开始时间和结束时间进行高级搜索后需要导出,在导出时显示空白页,项目提示这样的问题,于是我直接从导出开始却没有想导出不成功是因为之前输入的开始时间和结束时间的格式不对,下面是改后的结果:
因为我们的ORM是通过MyBatis实现的,所以我们看下xml中的sql语句:
这个是改前的时间:


<!-- 	 <isNotEmpty prepend=" " property="start_time" >  AND T.COST_TIME  >= #start_time# </isNotEmpty> -->
<!--     <isNotEmpty prepend=" " property="end_time" >  AND T.COST_TIME <= #end_time# </isNotEmpty> -->
下面是改后的时间格式:

<isNotEmpty prepend=" " property="start_time" >  AND T.COST_TIME  <![CDATA[ >=]]> TO_DATE(#start_time#,'yyyy-mm-dd hh24:mi:ss') </isNotEmpty>
<isNotEmpty prepend=" " property="end_time" >  AND T.COST_TIME <![CDATA[ <=]]> TO_DATE(#end_time#,'yyyy-mm-dd hh24:mi:ss') </isNotEmpty>
      所以可以看出这个错误的原因是将string类型的时间和date类型的时间进行对比,所以就会出现文字与格式字符串不匹配的问题。



相关文章
|
14天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
132 83
|
1月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
105 60
|
14天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
50 26
|
18天前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
39 8
|
29天前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
46 6
|
15天前
|
Java
Java将OffsetDateTime格式化为 yyyy-MM-dd HH:mm:ss 如何写代码?
Java将OffsetDateTime格式化为 yyyy-MM-dd HH:mm:ss 如何写代码?
24 0
|
2月前
|
JSON 前端开发 Java
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
文章介绍了Java后端如何使用Spring Boot框架响应不同格式的数据给前端,包括返回静态页面、数据、HTML代码片段、JSON对象、设置状态码和响应的Header。
153 1
震惊!图文并茂——Java后端如何响应不同格式的数据给前端(带源码)
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
56 15
|
2月前
|
Java 数据安全/隐私保护
Java ffmpeg 实现视频加文字/图片水印功能
【10月更文挑战第22天】在 Java 中使用 FFmpeg 实现视频加文字或图片水印功能,需先安装 FFmpeg 并添加依赖(如 JavaCV)。通过构建 FFmpeg 命令行参数,使用 `drawtext` 滤镜添加文字水印,或使用 `overlay` 滤镜添加图片水印。示例代码展示了如何使用 JavaCV 实现文字水印。
131 1
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
51 4

热门文章

最新文章