mysql中datetime类型默认存的是精确到s,也就是存进去的时间是用这个格式”yyyy-MM-dd HH:ss:mm”。
如果使用在用这个字段作为过滤条件,使用mybatis或者plus直接把这个日期作为参数传递进去的话,mybatis会默认使用timestamp类型,也就是此时这个date会被转换成以毫秒为单位的long值。
在执行sql的时候,就会出现明明时间小,但是却查出来了的情况,因为mysql的datetime也转换成时间戳比较的话,是默认转换成秒为单位的。
总结:如果数据库字段类型为默认的datetime的话,使用mybatis传参日期进行比较的时候,不能直接传入Date类型。
解决方式:
1.修改字段类型变成datetime(4),也就是精确到毫秒
2.传入日期的字符串
3.对日期进行格式化处理
本文转载自: 掘金