两个时间段查询的sql

image.png

这是之前改好的:

select ma.id,ma.title,ma.specification,sum(m.num*p.num) num,o.province,o.city from `order` o 

 join order_product p on p.order_id=o.id 

 join product_template t on p.item_template_id=t.id 

 join product_material m on m.product_id=t.id

 join material ma on ma.id=m.material_id

 where o.created between UNIX_TIMESTAMP('${tstart1}') and UNIX_TIMESTAMP('${tend1}')+86400 

and o.done_time between UNIX_TIMESTAMP('${pstart1}') and UNIX_TIMESTAMP('${pend1}')+86400 

and o.pay_status=2 and o.status=99

 /*and o.province="广东省" and o.city="深圳市"*/

 /* where o.created > 1631281869 */

 group by ma.id,ma.title,ma.specification,o.province,o.city;

-

-

-

但是用户说希望既可以同时使用,又可以单独使用其中一个

image.png

FineReport 百煮味香 发布于 2024-11-13 10:51 (编辑于 2024-11-13 10:52)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
华莉星宸Lv7资深互助
发布于2024-11-13 10:57

where 后面的过滤条件改为

where 1=1

 ${if(len(tstart1)==0,""," and o.created >= UNIX_TIMESTAMP('"+tstart1+"')")}

 ${if(len(tend1)==0,""," and o.created <= UNIX_TIMESTAMP('"+tend1+"')+86400")}

 ${if(len(pstart1)==0,""," and o.done_time >= UNIX_TIMESTAMP('"+pstart1+"')")}

 ${if(len(pend1)==0,""," and o.done_time <= UNIX_TIMESTAMP('"+pend1+"')+86400")}

最佳回答
0
yzmMArmb1895213Lv4见习互助
发布于2024-11-13 10:58(编辑于 2024-11-13 10:59)

代码判断一下,其中一个为空的时候不走那组控件的js校验,查询也注释掉

  • 3关注人数
  • 123浏览人数
  • 最后回答于:2024-11-13 10:59
    请选择关闭问题的原因
    确定 取消
    返回顶部