使用INTERVAL查询问题

时间:2014-01-17 16:52:51

标签: sql jasper-reports jasperserver

我正在使用 iReport 5.1 JasperReports Server 5.1 ,而我在使用INTERVAL查询时遇到问题。我遇到问题的查询行是:

AND I.created::DATE >= I.created::DATE - INTERVAL '$P{attribution_window_passed} days'

我将归因窗口值从主报表传递到子报表作为参数。我通过使用子报表中的文本字段验证传递的参数值是否正常工作。如果我用整数排除和替换$P{attribution_window_passed},则查询运行正常,例如:

AND I.created::DATE >= I.created::DATE - INTERVAL '30 days'

我认为问题是逃避单引号,我试过没有运气:

  • '$P{attribution_window_passed} days'

  • \' $P{attribution_window_passed} days'

  • $P{attribution_window_passed} days

  • $P{attribution_window_passed} ' days'

  • \'$P{attribution_window_passed} days\'

  • \\' $P{attribution_window_passed} days'

我也尝试将$P{attribution_window_passed}更改为字符串类而不是整数类。

我们将非常感谢您在查询中使用INTERVAL的任何建议。

1 个答案:

答案 0 :(得分:0)

我正在使用PostgreSQL。我在主报告和子报告中将参数'attribution_window_passed'从Integer更改为String。然后将主报告中的查询选择语句更改为

  • PC.attribution_window || 'days'作为attribution_window

用于连接并作为参数传递给子报表。子报表中的查询现在看起来像

  • AND PC.conversion_date - I.created< = $ P {attribution_window_passed} :: INTERVAL