你是oracel,如果你的字段budat在数据库里面就是日期格式,那么就没有必要去截取了。转换成文本后,其实性能还降低了。可以直接这样
------------------------------
where 1=1
${if(len(ym_sta)=0,"","and budat>=to_date('"+DATEINMONTH(CONCATENATE(ym_sta,"-01"),1)+"','yyyy-mm-dd')")}
${if(len(ym_end)=0,"","and budat<to_date('"+DATEINMONTH(CONCATENATE(ym_end,"-01"),-1)+"','yyyy-mm-dd')+1")}
--------------------
还有你是取一整月的数据。为什么又限制它为8天前的数据?