帆软时间公式判断

image.png  ${if(len(plot_design_apply_date_end)=0,""," AND  ND.DESIGN_APPLY_DATE   <= date '"+plot_design_apply_date_end+"' ")}  --设计申请时间end这个公式,为什么直接查询会查不到数据,如果使用sql预览查询在数据库编辑器就能查到

FineReport yzmknpQp2068966 发布于 2025-6-18 15:41
1min目标场景问卷 立即参与
回答问题
悬赏:3 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共5回答
最佳回答
0
snrtuemcLv8专家互助
发布于2025-6-18 15:42

不是  =null

是直接

=""

  • yzmknpQp2068966 yzmknpQp2068966(提问者) ""也不行
    2025-06-18 15:43 
  • snrtuemc snrtuemc 回复 yzmknpQp2068966(提问者) ="" 不点击设置值直接查询应该可以的,有值的话数据库date函数应该是date()这个用法,不是用date''号
    2025-06-18 15:45 
  • yzmknpQp2068966 yzmknpQp2068966(提问者) 回复 snrtuemc 没有设置值,直接查询的
    2025-06-18 16:03 
  • snrtuemc snrtuemc 回复 yzmknpQp2068966(提问者) 如果你设置=null,改成${if(len(plot_design_apply_date_end)=0||plot_design_apply_date_end='null',""," AND ND.DESIGN_APPLY_DATE <= date '"+plot_design_apply_date_end+"' ")}
    2025-06-18 16:05 
  • yzmknpQp2068966 yzmknpQp2068966(提问者) 回复 snrtuemc 不行
    2025-06-18 16:09 
最佳回答
0
用户k6280494Lv6专家互助
发布于2025-6-18 15:42

 ${if(len(plot_design_apply_date_end)=0,""," AND  ND.DESIGN_APPLY_DATE   <=  '"+plot_design_apply_date_end+"' ")}  

最佳回答
0
技术支持--哈哈Lv4初级互助
发布于2025-6-18 15:56
  1. 问题原因分析

  • 公式中使用了date '"+plot_design_apply_date_end+"'的语法

  • 部分数据库对日期字面量的格式要求严格,可能不兼容这种写法

  • 参数值可能未正确传递到SQL中

  1. 解决方案


-- 修改为以下两种写法之一:

-- 方案1(去掉date关键字):

${if(len(plot_design_apply_date_end)=0,""," AND ND.DESIGN_APPLY_DATE <= '"+plot_design_apply_date_end+"'")}



-- 方案2(使用数据库函数转换):

${if(len(plot_design_apply_date_end)=0,""," AND ND.DESIGN_APPLY_DATE <= TO_DATE('"+plot_design_apply_date_end+"','YYYY-MM-DD')")}
  1. 调试建议

  • 使用「报表调试助手」插件查看实际执行的SQL语句

  • 检查参数面板中plot_design_apply_date_end控件的格式是否与数据库要求一致

  1. 排查步骤

  1. 确认数据库类型及日期格式要求

  2. 在SQL预览时手动输入参数值测试语法

  3. 对比设计器与数据库工具中执行的完整SQL差异

SQL调试示意图

如果仍有问题,建议检查参数控件的返回值格式是否包含时间部分(如"2023-01-01 00:00:00"),这可能导致日期比较失败。

最佳回答
0
酒儿Lv2见习互助
发布于2025-6-18 16:25

什么数据库呢?

mysql试试:${if(len(plot_design_apply_date_end)=0,""," AND SUBSTR(ND.DESIGN_APPLY_DATE , 1, 10)  <=  '"+plot_design_apply_date_end+"' ")}  

oracle试试:${if(len(plot_design_apply_date_end)=0,""," AND TO_DATE(ND.DESIGN_APPLY_DATE , 'YYYY-MM-DD')  <=  '"+plot_design_apply_date_end+"' ")}  

最佳回答
0
yzm665590Lv2见习互助
发布于2025-6-18 17:07(编辑于 2025-6-18 17:10)

${if(len(plot_design_apply_date_end)==0,""," AND  ND.DESIGN_APPLY_DATE   <= date '"+plot_design_apply_date_end+"' ")} 

----------------------------------------------------------------------------------------------------------------------

${if(isnull(plot_design_apply_date_end)=true,""," AND  ND.DESIGN_APPLY_DATE   <= date '"+plot_design_apply_date_end+"' ")} 

  • 6关注人数
  • 80浏览人数
  • 最后回答于:2025-6-18 17:10
    请选择关闭问题的原因
    确定 取消
    返回顶部