当输入第一个日期控件 开始时间:比如:第一个控件的值是2020-8-9
第二个控件的值是null 查询2020-8-9之后的数据 比如:2020-8-10的数据
当输入第二个日期控件 结束时间:比如:第一个控件的值是null
第二个控件的值是2020-8-9 查询2020-8-9之前的数据 比如:2020-8-8的数据
当输入任何一个日期控件:比如:第一个控件的值是2020-8-20
第二个控件的值是2020-8-23 查询2020-8-20和2020-8-23之间的数据
${if(len(日期控件1)=0 && len(日期控件2)!=0," and TT <= '"+日期控件2+"'",
if(len(日期控件1)!=0 && len(日期控件2)=0," and TT >= '"+日期控件1+"'",if(len(日期控件1)!=0 && len(日期控件2)!=0," and TT >= '"+日期控件1+"'"+" and TT <='"+日期控件2+"'","二个控件同时为空时的过滤方法")))}
——————————————————————
这个需求有点“反人类”,一般情况前面的为开始日期,后面的为结束日期。要统计某个日期之前的数据都是第一个为空,第二个不为空。哪些大爷不合理的需求否掉,避免换一个大爷又出现理解误差,懒得解释
${if(len(日期控件1)==0,if(len(日期控件2)==0,""," and 日期<= '"+日期控件2+"'"),
if(len(日期控件2)==0," and 日期<= '"+日期控件1+"'"," and 日期>= '"+日期控件1+"' and 日期<= '"+日期控件2+"' ")
)}
不能按照逻辑写sql嘛.无非就是三个条件.判断里面用AND函数.当两个条件同时为真时,拼接相对应的sql
比如:第一个控件的值是2020-8-9
以下的例子,假设第一个控件有值,第二个控件没值.拼接查询日期大于2020-8-9的数据
if(AND(len(开始日期)>0,len(结束日期)=0,'按照逻辑写sql','')
and 1=1 ${if(len(日期控件1) == 0,"","and 表日期字段>='"+日期控件1+"'")}
and 1=1 ${if(len(日期控件2) == 0,"","and 表日期字段<='"+日期控件2+"'")}