历史版本17 :根据开始时间、结束时间查询数据 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 描述编辑

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

2. 思路编辑

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

3. 示例一:数据列过滤编辑

3.1 打开模板

打开模板:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\DynamicSQL.cpt

3.2 修改数据集

将数据集修改为:SELECT * FROM 订单

3.3 报表参数设置

点击模板>模板参数,添加两个报表参数,分别为 starttime 和 endtime。

3.4 修改参数界面

点击添加全部,将参数控件添加到参数界面中,并将参数界面设置为如下样式:

222

设置参数starttimeendtime的控件类型为日期型。

3.5 过滤条件设置

双击A2单元格(订单编号的数据列),选择过滤,给A2单元格增加如下图所示的过滤条件:

222

注:过滤条件的意思是订购日期大于等于开始日期并且小于等于结束日期。

3.6 效果查看

点击分页预览,选择好开始日期和结束日期后,点击查询按钮,效果如下图:

222

在线查看模板效果请点击 TimeScale.cpt

具体的模板设置可参考:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\TimeScale\开始结束时间.cpt

4. 示例二:数据集 SQL 过滤编辑

4.1 打开模板

打开模板:%FR_HOME%\webroot\WEB-INF\reportlets\doc\Parameter\DynamicSQL\DynamicSQL.cpt

4.2 修改数据集

将数据集修改为:SELECT * FROM 订单 where 1=1 ${if(len(starttime)=0,""," and 订购日期>='"+starttime+"'")}${if(len(endtime)=0,""," and 订购日期<='"+endtime+"'")} 

注:过滤条件的意思是订购日期大于等于开始日期并且小于等于结束日期,在时间参数为空的情况下不加此参数的过滤条件。

4.3 修改参数界面

点击添加全部,将参数控件添加到参数界面中,并将参数界面设置为如下样式:

222

设置参数 starttime 和 endtime 的控件类型为日期型。

保存后,点击分页预览,效果和方案一相同。

5. 扩展编辑

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