mybatis date类型比较

如果数据库是时间类型而且你传的值也是时间类型,可以直接比较。

第一种方法:    把转义字符">"和"<"替换掉.

<if test="startTime != null ">
    AND order_date &gt;= #{startTime,jdbcType=DATE} 
</if>
<if test="endTime != nul ">
    AND order_date &lt;= #{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>
原文地址:https://www.cnblogs.com/majw/p/11238914.html