反馈已提交

网络繁忙

根据开始时间、结束时间查询数据

  • 文档创建者:文档助手1
  • 历史版本:29
  • 最近更新:Fairy.Zhang 于 2024-06-28
  • 1. 概述

    1.1 版本

    报表服务器版本
    功能变更
    11.0-

    1.2 预期效果

    若数据库中存在一列数据是日期型的,希望查询某一段时间内的数据,此时要如何实现呢?

    23.png

    1.3 实现思路

    定义两个报表参数(一个开始时间一个结束时间),然后设置过滤条件为日期列大于等于开始时间并且日期列小于结束时间。

    2. 示例一:数据列过滤

    2.1 模板准备

    1)新建普通报表,新建模板数据集 ds1 ,SQL 语句为:SELECT * FROM 订单

    2)表格设计如下图所示:

    22.png

    3)点击「模板>模板参数」,添加两个报表参数,分别为 starttime 和 endtime。如下图所示:

    1601201440193315.png

    2.2 添加控件

    进入参数面板,点击右上角「全部添加」按钮,添加两个日期控件,如下图所示:

    20.png

    2.3 过滤条件设置

    双击 A2 单元格,选择过滤,给 A2 单元格增加如下图所示的过滤条件,过滤条件的意思是订购日期大于等于开始日期并且小于结束日期。

    注:数据库日期或时间为文本型时,建议用户转换为日期型或者时间型,因为文本型比较大小的原则,会不符合日期比较的情况。

    2.4 效果查看

    2.4.1 PC 端

    保存模板,点击「分页预览」,选择好开始日期和结束日期后,点击查询按钮,效果如下图所示:

    23.png

    2.4.2 移动端

    App 及 HTML5 端效果如下图所示:

    13.gif

    2.5 已完成模板

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\TimeScale\开始结束时间.cpt

    点击下载模板:开始结束时间.cpt

    3. 示例二:数据集 SQL 过滤

    3.1 模板准备

    1)新建普通报表,新建模板数据集 ds1 ,SQL 语句为:SELECT * FROM 订单 where 1=1 ${if(len(starttime)=0,""," and 订购日期>='"+starttime+"'")}${if(len(endtime)=0,""," and 订购日期<'"+endtime+"'")} 

    公式中语句的注释如下:

    • where 1=1 表示条件永真,防止没有参数条件时,where 后面没有有效内容导致出错。

    • len(starttime)==0 表示参数「starttime」为空。

    • and 订购日期>='"+starttime+"'"中间的「starttime」表示参数,'+' 为字符串拼接符号。

    • ${if(len(starttime)=0,""," and 订购日期>='"+starttime+"'")}表示:定义了参数 starttime,如果参数值为空,则查询全部数据;如果不为空,查询日期大于等于 starttime 的数据,这里这样定义主要是为了实现参数为空时查询全部。

    • endtime 原理一致,不再做赘述。

    2)表格设计,如下图所示:

    22.png

    3.2 添加控件

    进入参数面板,点击右上角「全部添加」按钮,添加两个日期控件,如下图所示:

    20.png

    3.3 效果查看

    效果与本文 3.4 节相同。

    3.4 已完成模板

    已完成模板可参见:%FR_HOME%\webapps\webroot\WEB-INF\reportlets\doc\Parameter\TimeScale\开始时间结束时间.cpt

    点击下载模板:开始时间结束时间.cpt

    4. 扩展

    1. 通常我们需要要校验:开始日期与结束日期不能为空、结束日期必须在开始日期之后、结束日期必须在开始日期后的某个时间段内,否则提示相关信息,详细设置点击: JS实现日期控件查询天数控制

    2. 如果想实现同一张报表中可实现分别按年、月、日来查询数据,可参考:动态显示参数控件

    附件列表


    主题: 参数应用
    已经是第一篇
    已经是最后一篇
    • 有帮助
    • 没帮助
    • 只是浏览
    中文(简体)

    鼠标选中内容,快速反馈问题

    鼠标选中存在疑惑的内容,即可快速反馈问题,我们将会跟进处理。

    不再提示

    10s后关闭



    AI

    联系我们
    在线支持
    获取专业技术支持,快速帮助您解决问题
    工作日9:00-12:00,13:30-17:30在线
    页面反馈
    针对当前网页的建议、问题反馈
    售前咨询
    采购需求/获取报价/预约演示
    或拨打: 400-811-8890 转1
    qr
    热线电话
    咨询/故障救援热线:400-811-8890转2
    总裁办24H投诉:17312781526
    提交页面反馈
    仅适用于当前网页的意见收集,帆软产品问题请在 问答板块提问前往服务平台 获取技术支持