将 datenum 字段转换为 jasper 域中的日期字段

Converting datenum field as a date field in jasper domain

我正在尝试在 jasper 域中创建一个计算字段,该字段的值为 Datenum。在创建计算字段时,我需要将该 datenum 转换为日期格式(1/1/16 或类似格式)。 我尝试过仅将数据类型从数字更改为最新。但它只给出了这样的东西(1/1/70)。我在下面附上了截图。 有什么方法可以将此字段用作日期字段。

转化

首先,您没有使用任何函数来告诉 Jasper 您需要约会。您只将数据类型设置为最新。由于 Java 日期从 01.01.1970 开始计算,因此这是您获得的日期。

计算字段不知道如何解释格式为 20160101 的数据。可以在以 ANSI 格式解释日期的表达式中使用名为 dateDomEL function

date('2016-01-01')

不过字段的格式 SUBMITDATENUM 是不同的。日期函数将无法解释这一点。不幸的是,我不知道是否可以提供一种解释数据的格式。

数据库选项

如果可以更改table结构的格式,只需添加另一个字段或更改字段的数据格式(如果可行)。否则,您可以添加一个数据库视图,将字段转换为 "real" 日期字段。

这是我想要的解决方案。

更多选项

版本 6 中可能有 Groovy 因为 it can be used inline:

<field id="e.groovyEval" dataSetExpression="groovy('(5.0/6).toString()')" type="java.lang.String" />

所以使用正确的 Groovy 函数(我还没有使用过 - 我不知道是否可以插入变量)这可能会有所帮助:

<field id="e.groovyDate" dataSetExpression="groovy('Date.parse(\'yyyyMMdd\', ASASMARTLAYER_PHWORDERSPAN.SUBMITDATENUM)')" type="java.lang.Date" />