开始时间 :createTimesStart
结束时间 : createTimesEnd
时间格式字段初始化 DATE_FORMAT()
<if test="createTimesStart != null and createTimesStart != ''">
<![CDATA[ and DATE_FORMAT(create_time, '%Y-%m-%d')>= #{createTimesStart} ]]>
</if>
<if test="createTimesEnd != null and createTimesEnd != ''">
<![CDATA[ and DATE_FORMAT(create_time, '%Y-%m-%d')<= #{createTimesEnd} ]]>
</if>
开始时间 <= 数据库时间 ,结束时间 >= 数据库时间
由于 MyBatis 会将 特殊字符(<,=,>)进行转义,所以需要使用 <![CDATA[ ]]>
需要写的sql放到 [ ] 中
查询时间区间是否有交叉:
mapper接口:
int checkDate(@Param("startDate") String startDate,
@Param("endDate") String endDate);
sql:
<if test="startDate != null and startDate != '' and endDate != null and endDate != ''">
<![CDATA[
AND (
DATE_FORMAT(SDATE, '%Y%m%d') >= #{startDate}
AND DATE_FORMAT(SDATE, '%Y%m%d') <= #{endDate}
OR
DATE_FORMAT(EDATE, '%Y%m%d') >= #{startDate}
AND DATE_FORMAT(EDATE, '%Y%m%d') <= #{endDate}
)
]]>
</if>