背景 - 想做生日的比较
若依自带的比较
<if test="params.beginTime != null and params.beginTime != ''"><!-- 开始时间检索 -->AND date_format(u.create_time,'%y%m%d') >= date_format(#{params.beginTime},'%y%m%d')</if><if test="params.endTime != null and params.endTime != ''"><!-- 结束时间检索 -->AND date_format(u.create_time,'%y%m%d') <= date_format(#{params.endTime},'%y%m%d')</if>
但是用于生日的比较,就是有问题,比如,我想查询2000-01-01 到 2020-12-31 出生的人,套用上面的,就是查询不出来
原因在于
'%y%m%d'
MySQL DATE_FORMAT() 函数对于大小写是有区别的
换成以下才生效
<if test="params.birthdayStart != null and params.birthdayStart != ''"><!-- 生日开始时间检索 -->AND date_format(u.birthday,'%Y%M%D') >= date_format(#{params.birthdayStart},'%Y%M%D')</if><if test="params.birthdayEnd != null and params.birthdayEnd != ''"><!-- 生日结束时间检索 -->AND date_format(u.birthday,'%Y%M%D') <= date_format(#{params.birthdayEnd},'%Y%M%D')</if>