我试图在jasper域中创建一个计算字段,该字段的值是Datenum。我需要在创建计算字段时将该datenum转换为日期格式(1/1/16或类似)。 我试过只将数据类型从数字更改为日期。但它只给出这样的东西(1/1/70)。我在下面附上了截图。 有没有办法将此字段用作日期字段。
答案 0 :(得分:1)
<强>转换强>
首先,您没有使用任何功能告诉Jasper您需要约会。您只将数据类型设置为date。自Java日期开始计算于1970年1月1日起,这是你得到的日期。
计算字段不知道如何以20160101
格式解释您的数据。可以在表达式中使用名为date
的{{3}}来解释ANSI格式的日期:
date('2016-01-01')
尽管如此,字段SUBMITDATENUM
的格式却不同。日期函数将无法解释此。不幸的是,我不知道是否有可能提供一种解释数据的格式。
数据库选项
如果您可以更改表结构的格式,只需添加另一个字段或更改字段的数据格式(如果可行)。否则,您可以添加一个数据库视图,将该字段转换为&#34; real&#34;日期字段。
这是我想要的解决方案。
更多选项
自DomEL function以来版本6中可能存在Groovy
:
<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" />