按时间删除数据报错的解决办法(Incorrect datetime value: '%2017-07-31%' for column 'orderDate' at row 1)

来源:互联网 发布:淘宝子账号怎么用 编辑:程序博客网 时间:2024/05/23 20:03

当按某个时间删除数据时,如果该时间是datetime类型,而条件语句里面比较的对象是date类型(XXXX-XX-XX)时,若服务器数据库版本较高,继续这样删除数据时会出现如下错误:

org.springframework.dao.DataIntegrityViolationException: StatementCallback; SQL [DELETE FROM ct_ppv_order WHERE orderDate like '%2017-07-31%']; Data truncation: Incorrect datetime value: '%2017-07-31%' for column 'orderDate' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '%2017-07-31%' for column 'orderDate' at row 1

解决办法:
利用date_format(orderDate,'%Y-%m-%d')将datetime型的数据转为date形式,不再用like去比较
eg:

//将订购时间为该批次统计时间的数据都清空String sql2 = "DELETE FROM ct_ppv_order WHERE date_format(orderDate,'%Y-%m-%d') = '" + beforeNowDateToString + "'";

将orderDate用date_format()转换为date类型,再和条件语句里的beforeNowDateToString 作比较。

阅读全文
0 0