SQL语句模糊匹配时间总结
实现的功能:
例:输入时间“08:08:08”则可以匹配到“2020-6-6 08:08:08”
方法很多,本人只掌握并使用了自己认为最简单明了的一种方法。
先说思想,想要匹配数据库中的datetime类型数据,最关键的就是类型问题。我们传入的参数一般是字符类型的时间,由于与数据库的时间类型不匹配,因而直接使用like模糊查询是行不通的。所以先将数据库的数转换为字符类型(此处的转换不会影响数据中数据的真实类型),再进行like匹配就可以完成。
格式:
//将某张表的某个字段的值转换为书写的格式,然后进行like匹配
date_format(表名.字段名,'%Y-%m-%d %H:%i:%s') LIKE CONCAT('%','自定义时间','%')
例:
<delete id="deleteCourseTimeSingle">
delete from t_course_time_single
where
date_format(t_course_time_single.start_time,'%Y-%m-%d %H:%i:%s') LIKE CONCAT('%',#{startTime},'%')
and
date_format(t_course_time_single.end_time,'%Y-%m-%d %H:%i:%s') LIKE CONCAT('%',#{endTime},'%')
</delete>