查询IF中的参数拼接

WHERE

ShopNo = '990001' 

AND OptDate >= '${day}' 

     ${if(FORMAT(NOW(),"yyyy-MM-dd ")>'2022-01-16', 

" AND OptDate <= ('"+ day +" 20:00:00)'",

      "AND OptDate <='" + DATEDELTA(day,1) + "'") }

参数day的值是‘2022-01-17’,报错了

该怎么调整?

FineReport 墨白哦 发布于 2022-1-18 11:22 (编辑于 2022-1-18 11:42)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
Z4u3z1Lv6专家互助
发布于2022-1-18 11:28(编辑于 2022-1-18 12:41)

可以自己拖一个控件命名为day

但是不建议用系统自带的函数命名,容易冲突,最好吧day改成day_

image.png

image.png

image.png

如果是把day_改成day就变成下面这种了

image.png

  • 墨白哦 墨白哦(提问者) 我就是自己的控件参数
    2022-01-18 11:30 
  • Z4u3z1 Z4u3z1 回复 墨白哦(提问者) 多了一个双引号
    2022-01-18 11:34 
  • 墨白哦 墨白哦(提问者) 回复 Z4u3z1 双引号是我打多了,但是整体拼接还是有问题
    2022-01-18 11:41 
  • Z4u3z1 Z4u3z1 回复 墨白哦(提问者) WHERE ShopNo = \'990001\' AND OptDate >= \'${day}\' ${if(FORMAT(NOW(),\"yyyy-MM-dd \")>\'2022-01-16\', \" AND OptDate <= (\'\"+CONCATENATE(day,\' 20:00:00\') +\"\'\", \"AND OptDate <=\'\" + DATEDELTA(day,1) + \"\'\") } 最好看看日志执行的具体SQL(不清楚你的day控件是怎么设置的以及数据库中OptDate是什么类型的数据)
    2022-01-18 11:50 
  • 墨白哦 墨白哦(提问者) 回复 Z4u3z1 直接报错0.0 预览不了
    2022-01-18 11:59 
最佳回答
0
CD20160914Lv8专家互助
发布于2022-1-18 11:29(编辑于 2022-1-18 12:12)

${if(FORMAT(NOW(),"yyyy-MM-dd")>'2022-01-16', " AND OptDate <= ('"+ day +" 20:00:00)'","AND OptDate <='" + DATEDELTA(day,1) + "'") }

这样???但是我看你的这个逻辑好像有问题吧。。。和上面一个AND OptDate >= '${day}'  冲突?为什么不写在一个if里面一起。都是一个字段

WHERE

ShopNo = '990001' 

AND OptDate >= '2021-01-17' 

AND OptDate <= ('2021-01-17 20:00:00)'

image.png

  • CD20160914 CD20160914 回复 墨白哦(提问者) if改成我上面这样的就可以了。你可以预览看
    2022-01-18 11:33 
  • 墨白哦 墨白哦(提问者) 回复 CD20160914 我条件是测试的时候用的,正成情况应该是 ,我现在想满足的时候,如果‘2022-01-17’>\'2022-01-16\'的时候, optdate>=\'2021-01-16\' and optdate<=\'2022-01-16 20:00:00\'
    2022-01-18 11:38 
  • 墨白哦 墨白哦(提问者) 你这个执行的时候报错了0.0.
    2022-01-18 11:38 
  • CD20160914 CD20160914 回复 墨白哦(提问者) 你把上面我修改的where语句放在你的数据库工具执行。报错的话就是你没有转日期格式,你是什么数据库?然后OptDate的字段类型是什么。
    2022-01-18 12:13 
  • 墨白哦 墨白哦(提问者) 回复 CD20160914 where语句都能执行,主要是参数拼接就不行,sqlserver,optdate是datetime
    2022-01-18 12:15 
最佳回答
0
墨残烛Lv5初级互助
发布于2022-1-18 12:47

你的单引号前面的是在前括号里面,怎么后面的在后括号外面了?

image.png

  • 3关注人数
  • 489浏览人数
  • 最后回答于:2022-1-18 12:47
    请选择关闭问题的原因
    确定 取消
    返回顶部