mysql datetime类型的字段进行时间比较+mybatis plus可能遇到的坑

4,761 阅读1分钟

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.对日期进行格式化处理