数据集if函数转换问题

是这样,我有一个参数,值为空时传-1,其他时候传一个日期,如:2022-09-02这样,由于to_date的时候,-1会报错,为了用户不产生这个错误提示,我打算用if函数,判断参数为-1时,改成一个随意的日期,如:2122-09-02。但是其他的日期就转换失败了。如下:

结果如下:

FineReport 帆软用户k3fmXrMY5z 发布于 2022-9-6 15:11
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共2回答
最佳回答
0
congerLv6高级互助
发布于2022-9-6 15:16(编辑于 2022-9-6 17:04)

在等号的时候就开始IF判断,如果参数为-1就写一个日期,不是-1再to_date格式化呀

写完sql先在这里预览一下,应该是sql没写对

image.png

image.png

格式和长度你转成你想要的

  • 帆软用户k3fmXrMY5z 帆软用户k3fmXrMY5z(提问者) where t.compiledate = ${if(P_COMPILEDATE==-1,\"2122/8/1\",to_date(P_COMPILEDATE,\'yyyy/mm/dd\'))} 是说这样么,这样报了一个错误代码:11300001的错误
    2022-09-06 15:46 
  • conger conger 回复 帆软用户k3fmXrMY5z(提问者) 你把参数写好后 点一下预览sql 看看你的sql对吗
    2022-09-06 15:50 
  • 帆软用户k3fmXrMY5z 帆软用户k3fmXrMY5z(提问者) 回复 conger 我就是通过预览看的,能不能试一下这条sql select to_date(${if(P_COMPILEDATE==-1,\"\'2122/08/01\'\",P_COMPILEDATE)},\'yyyy/mm/dd\') from dual 我输入-1的时候,可以展示,但是输入2022/09/02,就提示无效的月份
    2022-09-06 16:26 
  • conger conger 回复 帆软用户k3fmXrMY5z(提问者) SELECT ${IF(P_COMPILEDATE=\'-1\',\"to_date(\'2122/01/01\',\'YYYY/MM/DD\')\",\"to_date(\'\"+P_COMPILEDATE+\"\',\'YYYY/MM/DD\')\")} FROM dual
    2022-09-06 17:02 
  • 帆软用户k3fmXrMY5z 帆软用户k3fmXrMY5z(提问者) 回复 conger 谢谢,解决了,原来要拼一下才行
    2022-09-06 17:05 
最佳回答
0
仰望ingLv5见习互助
发布于2022-9-6 15:32(编辑于 2022-9-6 15:34)

日期格式用yyyy-mm-dd试下

to_date(${if(P_COMPILEDATE==-1,"2122-08-01",P_COMPILEDATE)},'yyyy-mm-dd')

  • 帆软用户k3fmXrMY5z 帆软用户k3fmXrMY5z(提问者) 输入值对,日期格式不够长。好像是这个if函数之后的这个P_COMPILEDATE变成了一个数字,而不是原本输入的2022-09-02
    2022-09-06 15:50 
  • 3关注人数
  • 382浏览人数
  • 最后回答于:2022-9-6 17:04
    请选择关闭问题的原因
    确定 取消
    返回顶部