mybatis时间范围查询
时间: 2023-11-09 11:19:53 浏览: 178
在MyBatis中,有多种方法可以进行时间范围查询。
第一种方法是使用大于等于和小于等于符号进行查询。可以直接在SQL语句中使用如下代码进行判断:
<if test="startTime != null and startTime != ''"> and timer.create_time >= #{startTime} </if>
<if test="endTime != null and endTime != ''"> and timer.create_time <= #{endTime} </if>
第二种方法是使用MyBatis-Plus框架中的apply方法进行查询。可以使用如下代码:
apply(ObjectUtil.isNotEmpty(dto.getStartTime()),"planned_complete_date >= DATE_FORMAT('" dto.getStartTime() "','%Y-%m-%d')")
.apply(ObjectUtil.isNotEmpty(dto.getEndTime()),"planned_complete_date <= DATE_FORMAT('" dto.getEndTime() "','%Y-%m-%d')");
第三种方法是使用可视化工具进行查询。可以直接在工具中使用SQL语句进行查询,如:
ccf.last_update_timestamp between TIMESTAMP '2019-12-13' AND TIMESTAMP '2019-12-13'
针对问题中的情况,如果开始时间和结束时间是同一个日期,查询可能无法成功。解决方法是使用DATE_FORMAT函数将日期转换成相同格式进行比较,例如:
<if test="ew.plannedStartDate != null"> <![CDATA[ and DATE_FORMAT(planned_start_date, '%Y-%m-%d') >= #{ew.plannedStartDate} ]]> </if>
<if test="ew.plannedEndDate != null"> <![CDATA[ and DATE_FORMAT(planned_start_date, '%Y-%m-%d') <= #{ew.plannedEndDate} ]]> </if><span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
阅读全文