mysql delete from like 时间 提示格式错误
按时间删除数据报错的解决办法(Incorrect datetime value: '%2024-08-20%' for column 'yizuotu_net' at row 1)
当按某个时间删除数据时,如果该时间是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: '%2024-08-20%' for column 'yizuotu_net' at row 1;
nested exception is com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect datetime value: '%2024-08-20%' for column 'yizuotu_net' at row 1
解决办法:
利用date_format(yizuotu_net,'%Y-%m-%d') 将datetime型的数据转为date形式,不再用like去比较
例如:
//将订购时间为该批次统计时间的数据都清空
String sql2 = "DELETE FROM `yizuotu.net` WHERE date_format(yizuotu_net,'%Y-%m-%d') = '" + zzzyk_com + "'";
将yizuotu_net 用date_format()转换为date类型,再和条件语句里的zzzyk_com 作比较。