如果数据库是时间类型而且你传的值也是时间类型,可以直接比较。
第一种方法: 把转义字符">"和"<"替换掉.
<if test="startTime != null ">
AND order_date >= #{startTime,jdbcType=DATE}
</if>
<if test="endTime != nul ">
AND order_date <= #{endTime,jdbcType=DATE}
</if>
第二种方法: 使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析
<if test="startTime != null ">
AND <![CDATA[ order_date >= #{startTime,jdbcType=DATE} ]]>
</if>
<if test="endTime != null ">
AND <![CDATA[ order_date <= #{endTime,jdbcType=DATE} ]]>
</if>
注意date类型不用判断="",要不然会报错的。
并且jdbcType=DATE,参数中的date格式为yyyy-mm-dd,不带时分秒,查询到某天这种。
如果需要精确到时分秒,需要将jdbcType设置成TIMESTAMP。
参考:https://blog.csdn.net/u010526028/article/details/74315775/
jdbcType=DATE的时候 只能和2018-09-06比较。
有格式的日期比较,可以使用date_format方法
<if test="creationDate != null"> <![CDATA[ AND DATE_FORMAT(a.creation_date, '%Y-%m-%d') = DATE_FORMAT(#{creationDate,jdbcType=DATE},'%Y-%m-%d')]]> </if>