Oracle日期函数问题

${if(len(start_time)=0,""," and to_char(d.CREATEDDATE,'yyyy-mm-dd')>='"+start_time+"'")}

${if(len(end_time)=0,""," and d.CREATEDDATE<='"+end_time+"'")} 

上述两个都会报错,SQL命令未正确结束

请问在report里,Oracle的日期区间怎么写? PS:别纠结开始和结束为什么没用同一函数,只是懒得写!

FineReport six28 发布于 2022-9-14 09:41 (编辑于 2022-9-14 09:45)
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共4回答
最佳回答
0
six28Lv5初级互助
发布于2022-9-14 11:15

找到问题了,非函数问题,是语句前后问题!非常感谢楼下的回答

最佳回答
0
CD20160914Lv8专家互助
发布于2022-9-14 09:43(编辑于 2022-9-14 09:49)

${if(len(start_time)=0,""," and to_char(d.CREATEDDATE,'yyyy-mm-dd')>='"+start_time+"'")}

${if(len(end_time)=0,""," and to_char(d.CREATEDDATE,'yyyy-mm-dd')<='"+end_time+"'")} 

下面一个也要格式化呀。

如果是标准的日期,你这样测试看

${if(len(start_time)=0,"","and d.CREATEDDATE>=to_date('"+start_time+"','yyyy-mm-dd')")}

${if(len(end_time)=0,"","and d.CREATEDDATE<to_date('"+end_time+"','yyyy-mm-dd')+1")}

  • six28 six28(提问者) ........我就知道有人在纠结这个问题,然并不是这原因,我只是懒得复制两个而已
    2022-09-14 09:44 
  • CD20160914 CD20160914 回复 six28(提问者) 自己看你的CREATEDDATE字段是不是日期格式,如果不是日期格式。你用to_char肯定不行呀。
    2022-09-14 09:46 
  • six28 six28(提问者) 回复 CD20160914 本身就是日期字段,但是不知道为啥一定得加函数,在Navicat也是要加函数才能查
    2022-09-14 09:56 
最佳回答
0
congerLv6高级互助
发布于2022-9-14 09:46(编辑于 2022-9-14 09:47)

image.png

image.png

拼接好了点这个预览一下,可以看到哪里有问题

  • six28 six28(提问者) 如果直接是where后面是可以的,但是如果在where后,就必须填写日期, 我用${if(len(start_time)=0,\"\",\" and d.CREATEDDATE>=\'\"+start_time+\"\'\")}就是想不强制选择日期
    2022-09-14 09:54 
最佳回答
0
南巷尕杰Lv4初级互助
发布于2022-9-14 10:17

可以参考下 这个

${if(len(starttime) == 0,""," and VOUCHER_DATE between '" + starttime + "' and '" + endtime + "'")}

  • 3关注人数
  • 442浏览人数
  • 最后回答于:2022-9-14 11:15
    请选择关闭问题的原因
    确定 取消
    返回顶部