1、引入问题:
近日有群成员提出一个问题:数据库是date类型,MyBatis传入timestamp类型参数,但是查询结果为 0 。如下所示:
queryWrapper.ge("date_format(create_time,'%Y-%m-%d')", yxhServeApplyDto.getBeginTime());
queryWrapper.le("date_format(create_time,'%Y-%m-%d')", yxhServeApplyDto.getEndTime());
Preparing: select * from 表名 where begin_time = ?
Parameters: 2021-11-19 00:00:00.0(Timestamp)
Total: 0
打印的sql语句如下:自动加上了
00:00:00.0
select * from 表名
where 1=1
and ( date_format( create_time, '%Y-%m-%d' ) >= '2021-11-19 00:00:00.0'
AND date_format( create_time, '%Y-%m-%d' ) <= '2021-11-20 00:00:00.0' )
2,解决方案
将传入的时间格式化为自己理想的格式并转为字符串即可
queryWrapper.ge("date_format(create_time,'%Y-%m-%d')",时间格式化为字符串);
queryWrapper.le("date_format(create_time,'%Y-%m-%d')", 时间格式化为字符串);
转后打印的结果:
select * from 表名
where 1=1
and ( date_format( create_time, '%Y-%m-%d' ) >= '2021-11-19'
AND date_format( create_time, '%Y-%m-%d' ) <= '2021-11-20' )
就能查到结果了