如果數據庫是時間類型而且你傳的值也是時間類型,可以直接比較。
第一種方法: 把轉義字符">"和"<"替換掉.
<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>