我正在创建一个 Jasper 报告,其中包含以下参数:
这些参数指示名为DATECREATED (时间戳)的字段的日期范围,其中包括时间。我希望日期范围是包容性的,也就是说,如果我过滤“2009年1月1日”到“2009年1月31日”,2009年1月31日的任何 DATECREATED 值(例如“2009年1月31日 15:00”) ”)将包含在报告中。
以前使用 Crystal Reports 时,我使用 DATEADD 函数创建过滤表达式,如下所示:
{DATECREATED} >= {DATESTART} and {DATECREATED} < DATEADD("d", 1, {DATEEND})
Run Code Online (Sandbox Code Playgroud)
(我意识到这在语法上不正确,但你明白了。)
Jasper Reports 有没有办法做类似的事情?
如果你懂法语,这个线程中也会问同样的问题 (唯一的区别是它是关于添加一个月)
建议的解决方案如下:
直接在查询中使用 SQL 语句执行此操作(当然,如果您的数据源是 SQL 数据源)。使用 MySQL 你可以做类似的事情
DATE_ADD($P{DATEEND},INTERVAL 1 DAY);
Run Code Online (Sandbox Code Playgroud)
更多信息:日期和时间函数(MySQL 文档)
另一个解决方案是使用 Java 可能的Date 对象:
我提出了类似的建议:
$P{DATEEND}.setDay($P{DATEEND}.getDay()+1)
Run Code Online (Sandbox Code Playgroud)
但我没有尝试(而且可能是错误的)。
也许您需要定义一个新的日期变量 DATEEND_1 ,其值表达式如下:
new Date($P{DATEEND}.getTime() + 24*60*60*1000)
Run Code Online (Sandbox Code Playgroud)
或者
new java.util.Date($P{DATEEND}.getTime() + 24*60*60*1000)
Run Code Online (Sandbox Code Playgroud)
并在您的查询中使用这个新变量V{DATEEND_1}。
(我再次不确定)
| 归档时间: |
|
| 查看次数: |
31314 次 |
| 最近记录: |