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

xiaoxiao2021-02-28  112

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

org.springframework.dao.DataIntegrityViolationException: StatementCallback; SQL [DELETE FROM ct_ppv_order WHERE orderDate like ' 17-07-31%']; Data truncation: Incorrect datetime value: ' 17-07-31%' for column 'orderDate' at row 1; nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: ' 17-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 作比较。

转载请注明原文地址: https://www.6miu.com/read-76734.html

最新回复(0)