如何根据当前时间切换不同的sql语句?

sum(case when w.finish_time BETWEEN CONCAT(DATE('2020-01-13'),' 08:00:00') AND CONCAT(DATE('2020-01-13'),' 20:00:00')  then 1 else 0 end) as '08:00-20:00 早班',

 

sum(case when w.finish_time BETWEEN CONCAT(DATE('2020-01-13'), ' 20:00:00') AND CONCAT(DATE('2020-01-14'),'  08:00:00')  then 1 else 0 end ) as '20:00:08:00 晚班'

sql 里有这2个统计早班,晚班的数据,我想根据当前时间统计数据,比如说是8:00-20:00 就只显示早班,20:01-第二天早上7:59分显示晚班数据,主要是做出柱状图,在大屏上轮播,当前时间是9点就只显示8:00-20:00 ,当时间到21点,就显示晚班数据

或者有其他方式吗?

FineReport fanqieo 发布于 2020-1-15 17:51
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
shirokoLv6资深互助
发布于2020-1-16 09:07(编辑于 2020-1-16 09:49)

可以直接用$公式包含整个查询语句的。

${if(时间>=1&& 时间<=2,   "SELECT  * FROM XXX WHERE A=B " ,  "SELECT * FROM XXX WHERE B=C")}

甚至可以这样




${if(format(now(),"hh:mm:ss")>="08:00:00", "SELECT * FROM test LIMIT 10" ,"SELECT * FROM test LIMIT 20")}
  • fanqieo fanqieo(提问者) ${if(curtime()>=\"08:00:00\", \"SELECT * FROM test LIMIT 10\" , \"SELECT * FROM test LIMIT 20\")} 我想获得当前时间来判断是否大于8点来执行不同sql有啥办法吗,我报错了
    2020-01-16 09:11 
  • shiroko shiroko 回复 fanqieo(提问者) 因为外面用双引号字符串了,sql语句里面不能直接用双引号,不然会分开
    2020-01-16 09:13 
  • fanqieo fanqieo(提问者) 回复 shiroko 我弄了半天,也没写出来,想写个判断下系统时间是否大于08:30这样子的,能帮忙下看看嘛?if的时间判断要咋弄
    2020-01-16 09:42 
  • shiroko shiroko 回复 fanqieo(提问者) 试试看
    2020-01-16 09:49 
最佳回答
0
一心向明月Lv5见习互助
发布于2020-1-15 17:54

那你可以在报表块中做三个柱形图,,分别对应早班,中班,晚班的柱形图,然后根据时间去显示或者隐藏,这是一种办法

最佳回答
0
孤陌Lv6资深互助
发布于2020-1-15 18:25(编辑于 2020-1-15 18:29)

这个你写参数的时候 写一个时间段 就好了啊  然后参数模板 弄个开始时间和结束时间 二个日期控件 

然后日期控件值写 公式判断就好了  

if(

(DATESUBDATE(now(),today(),"s"))<37800,

CONCATENATE(today()-1,"--22:30:00"),

if(

(DATESUBDATE(now(),today(),"s"))<81000,CONCATENATE(today(),"--10:30:00"),

CONCATENATE(today(),"--22:30:00")))  判断开始时间是用10.30 还是22.30


估计时间范围自动判断应该用哪个时间做为开始时间  

然后控件值刷新 写个JS 到时间 刷新 就好了

  • 4关注人数
  • 612浏览人数
  • 最后回答于:2020-1-16 09:49
    请选择关闭问题的原因
    确定 取消
    返回顶部