报表参数为日期格式,在筛选数据时可以直接做加减运算吗?
报表有2个参数,广告栏编号(arg1)和刊登日期(arg2)。
刊登日期欲抓出一周内的资料打印,即筛选出 arg2 ~ arg2+6 之间的数据。
参数编辑如下:
在数据集中参数配置如下:
SQL 语法如下:
SELECT custom_data_1020.postdate,custom_data_1020.id,custom_data_1020.post_qty,custom_data_1010.location,custom_data_1010.ad_qty FROM custom_data_1020,custom_data_1010
WHERE (? is null OR custom_data_1020.id = ?)
and
(? is null OR (custom_data_1020.postdate >= ? AND custom_data_1020.postdate <= (?+6) )
)
AND
(custom_data_1010.id = custom_data_1020.id)
ORDER BY custom_data_1020.id ASC,custom_data_1020.postdate ASC
在浏览数据中,数据展示的不只是七日内的数据, custom_data_1020.postdate <= (?+6) 未发挥作用。
请问这里要如何修正?
浏览数据:
浏览结果:
数据集中 那个 (?+6) 这里改成问号,然后在 数据集那个参数表达式那,应该是滴 5 个,那里不止可以写 参数名,也可以通过表达式进行控制,里边可以写 elapse(arg2,6), 这个是取 arg2 日期后 6 天的日期。
具体的话也可以看下 elapse 的函数帮助,里边有详细说明。
感谢回复。
不过在 SQL 语句中似乎不支援 elapse()。
改用:
custom_data_1020.postdate between ? AND date_add(?, interval 6 day)
已顺利取得数据。
解决就好,elapse 是报表里的函数,也就是 sql 里 用 where 日期字段 <? ,然后在后边对应参数表达式那,现在写的是 arg2,这里可以用表达式控制取六天后的日期。比如 elapse(arg2,6),这样,传递给 sql 中问号就是 六天后的那个日期值