如果开始日期为空则传入结束日期的当年1号

testdate between to_date('${开始日期}','yyyy-mm-dd') and to_date('${结束日期}','yyyy-mm-dd')

这个怎么改为如果开始日期为空则取结束日期的本年第一天 例如结束日期传入2020-08-01,开始日期没有传入值则 为testdate between to_date('2020-01-01','yyyy-mm-dd') and to_date('2020-08-01','yyyy-mm-dd')

image.png


FineReport lincoder 发布于 2020-8-10 15:36 (编辑于 2020-8-10 16:19)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
1
张洪威Lv6高级互助
发布于2020-8-10 15:49

testdate between to_date(${if(len(开始日期)=0,year(结束日期)+"-01-01",开始日期)},'yyyy-mm-dd') and to_date('${结束日期}','yyyy-mm-dd')

最佳回答
0
ColdmanLv6高级互助
发布于2020-8-10 15:47

使用case when来判断开始日期字段,如果为空,截取结束日期年份拼接“-01-01”

  • lincoder lincoder(提问者) 你好,我完善了下,具体的可以写一下吗?
    2020-08-10 15:48 
  • Coldman Coldman 回复 lincoder(提问者) 你是参数传递的话这么写to_date(${IF(LEN(开始日期) = 0,substr(\'${结束日期}\',1,4)||\'-01-01\',开始日期)},\'yyyy-mm-dd\') and to_date(\'${结束日期}\',\'yyyy-mm-dd\') 注意字段格式就行
    2020-08-10 16:15 
最佳回答
0
zjc@Lv3初级互助
发布于2020-8-10 16:07

一看你的sql应该是oracle数据库,这么写

testdate between to_date(${IF(LEN(开始日期) == 0,SUBSTR('${结束日期}',1,5)||'01-01',开始日期)},'yyyy-mm-dd') and to_date('${结束日期}','yyyy-mm-dd')

  • lincoder lincoder(提问者) 预览报错
    2020-08-10 16:19 
  • zjc@ zjc@ 回复 lincoder(提问者) 我这么写也报错吗?如果报错的话可能是你设置的参数返回值格式和sql中不对应,你看着设置对应一致
    2020-08-10 16:26 
最佳回答
0
axingLv6专家互助
发布于2020-8-10 21:29
testdate between to_date('${IF(LEN(开始日期)=0,DATEINMONTH(结束日期,1),开始日期)}','yyyy-mm-dd') and to_date('${结束日期}','yyyy-mm-dd')


  • 5关注人数
  • 400浏览人数
  • 最后回答于:2020-8-10 21:29
    请选择关闭问题的原因
    确定 取消
    返回顶部