Jasper Reports - 在日期参数中添加一天

Tem*_*lar 3 jasper-reports

我正在创建一个 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 有没有办法做类似的事情?

Jmi*_*ini 6

如果你懂法语,这个线程中也会问同样的问题 (唯一的区别是它是关于添加一个月)

建议的解决方案如下:

SQL

直接在查询中使用 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}

(我再次不确定)