2 pudilang pudilang 于 2016.09.10 21:31 提问

mybatis的一个很奇怪的错误 2C

1、就是这段sql,as_senddate是varchar类型,

 UPDATE as_infos t SET t.as_status='22' WHERE (TO_DAYS(NOW()) -
        TO_DAYS(t.as_senddate)) >= 0 AND
        t.as_status='21'

2、直接在mysql中执行不报错,使用mybatis时报错。as_senddate的值不为空。
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ''
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4094)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4028)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2490)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2651)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2734)
at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2155)
at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1379)

5个回答

devmiao
devmiao   Ds   Rxr 2016.09.10 23:53
wojiushiwo945you
wojiushiwo945you   Ds   Rxr 2016.09.11 07:12

用框架的时候参数传递的是什么类型呢?应该跟数据库类型一致。

Marksinoberg
Marksinoberg   Ds   Rxr 2016.09.11 07:58

无效的时间值类型数据。应该保证数据类型的一致性。希望对你有用。

Evankaka
Evankaka   Ds   Rxr 2016.09.11 12:00

(TO_DAYS(NOW()) - TO_DAYS(t.as_senddate)) >= 0 这里写sql查询效率不高
可以试试使用t.as_senddate <=to_char(NOW()))

aa1358075776
aa1358075776   2016.09.14 14:54

t.as_senddate 应该是这里为空,或者识别不出这个字段

Csdn user default icon
上传中...
上传图片
插入图片