Closed cbqqkcel closed 1 year ago
monthCount 执行是不会报错的。执行 month 语句才报的错误
FORMATDATETIME 这个函数返回的是字符串,ibatis 收到的结果就已经是字符串“2023-08”了,它调用 ResultSet.getTimestamp(int) 时又把这个字符串转成 java.sql.Timestamp 对象,java.sql.Timestamp 在解析字符串 “2023-08” 时认为它不合法所以就抛异常了。
在命令行客户端执行那条 SQL 执行的是 ResultSet.getString(int) 或 ResultSet.getObject(int) ,直接就返回字符串 “2023-08” 了,所以不会报错。
StockCountOut 这个类映射的字段类型变成 String 后看看 ibatis 是否调用 ResultSet.getString(int)
改成字符串可以了
改成字符串可以了
老哥好多issues 都是你提的,值得一个contributer了
改成字符串可以了
老哥好多issues 都是你提的,值得一个contributer了
我有吸引Bug的体制,什么软件到我手上,都要出问题。
上面的代码会报以下错误 java.lang.IllegalArgumentException: 2023-08 at org.lealone.common.util.DateTimeUtils.parseDateValue(DateTimeUtils.java:267) ~[lealone-common-5.2.0-SNAPSHOT.jar:na] at org.lealone.db.value.ValueTimestamp.parseTry(ValueTimestamp.java:108) ~[lealone-common-5.2.0-SNAPSHOT.jar:na] at org.lealone.db.value.ValueTimestamp.parse(ValueTimestamp.java:89) ~[lealone-common-5.2.0-SNAPSHOT.jar:na] at org.lealone.db.value.Value.convertTo(Value.java:882) ~[lealone-common-5.2.0-SNAPSHOT.jar:na] at org.lealone.db.value.Value.getTimestamp(Value.java:409) ~[lealone-common-5.2.0-SNAPSHOT.jar:na] at org.lealone.client.jdbc.JdbcResultSet.getTimestamp(JdbcResultSet.java:474) ~[lealone-client-5.2.0-SNAPSHOT.jar:na] at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:37) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.type.DateTypeHandler.getNullableResult(DateTypeHandler.java:28) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.type.BaseTypeHandler.getResult(BaseTypeHandler.java:86) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.applyAutomaticMappings(DefaultResultSetHandler.java:582) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.getRowValue(DefaultResultSetHandler.java:412) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValuesForSimpleResultMap(DefaultResultSetHandler.java:362) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleRowValues(DefaultResultSetHandler.java:333) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSet(DefaultResultSetHandler.java:306) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.resultset.DefaultResultSetHandler.handleResultSets(DefaultResultSetHandler.java:202) ~[mybatis-3.5.13.jar:3.5.13] at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:66) ~[mybatis-3.5.13.jar:3.5.13]
但是把打印的 sql 放到工具上执行又是可以的![image](https://github.com/lealone/Lealone/assets/4516585/acacf57f-1485-431e-a71a-876836ce96fa)
如果把'yyyy-MM' 改成 'yyyy-MM-dd' 又不会报错了