finereport sql条件查询如何拼装字符串(时间)

${if(班次 == '夜班',"'"+开始日期+" 20:30:59'","'"+开始日期 + " 08:30:59'")}

if这样写法对不对????

写错了,完整的sql语句是这样的

SELECT MAX(volume) maxvol,towernumber FROM catch_gas WHERE CONVERT(varchar(100), time,20)>=${if(班次 == '夜班',"'"+开始日期+" 20:30:59'","'"+开始日期 + " 08:30:59'")}

AND CONVERT(varchar(100), time, 20) <=${if(班次 == '白班',"'"+结束日期 +" 20:30:59'","'"+结束日期+1 + " 08:30:59'")}

我用if是为了依据班次为条件获取一个时间的值,这个日期的计算一脸懵逼!!要怎么写这个日期的计算?????

tangshi998 发布于 2019-1-29 13:57 (编辑于 2019-1-29 14:13)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共1回答
最佳回答
0
flyingsnakeLv6资深互助
发布于2019-1-29 14:02(编辑于 2019-1-29 14:31)

${if(班次 == '夜班',"'"+开始日期+" 20:30:59'","'"+开始日期 + " 08:30:59'")}



这样的返回值是

是夜班的时候

'开始时间' 20:30:59

不是夜班的时候

'开始时间' 08:30:59


正常的sql语句是需要


字段名 = 某变量 

z这样的格式的


所以,你的语句应该改成




SELECT MAX(volume) maxvol,towernumber FROM catch_gas WHERE

1=1


${if(班次 == '夜班'," and CONVERT(varchar(100), time,20)>='"+开始日期+" 20:30:59'","  and  CONVERT(varchar(100), time,20)>='"+开始日期 + " 08:30:59'")}

${if(班次 == '白班'," AND CONVERT(varchar(100), time, 20) <='"+结束日期 +" 20:30:59'"," AND CONVERT(varchar(100), time, 20) <='"+DATEDELTA(结束日期,1) + " 08:30:59'")}


  • 2关注人数
  • 413浏览人数
  • 最后回答于:2019-1-29 14:31
    请选择关闭问题的原因
    确定 取消
    返回顶部