我使用iReport开发了一份报告。该报告应该在几个不同的数据库中运行。
在报告中我放了几个参数,其中一些包含日期格式。当我使用to_date(<parameter variable>)
时,一切顺利。
但现在看来这种方法无法在Postgres上运行,所以我尽量不使用to_date()
。
我把它留作
ex: date = $P{date}
我将初始值更改为
new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")
。
编译时没有错误,但是当我运行应用程序时,它会出现错误:
java.io.StreamCorruptedException: invalid stream header: 3C68746D.
稍后我尝试将参数类型更改为String
(来自java.util.Date
)并将""
作为初始值。
效果很好,除了Oracle数据库。有人能帮助我吗?
答案 0 :(得分:0)
首先,我猜你已经意识到你正在尝试将字符串值放在日期字段上,当你做new SimpleDateFormat("dd/MM/yyyy").parse("01/01/2011")
时,对吗?
我不知道我是否帮助你,但我猜你的数据库中的字段是Date,所以你必须使用日期,而不是字符串。最终的格式转换(将导致字符串)必须在您的报告模板中或您正在使用的任何内容中。但是数据库会将日期返回给您的API。
答案 1 :(得分:0)
将日期格式为字符串并以“DD / MM / YYYY”格式传递给代码中的i-report。
在i-report中以这种格式编写查询(更改日期格式以适应输入):
to_date('fieldnameofDB','DD/MM/YYYY')=$P{nameOfParameterPassed}
只需更改接受参数的方式,将参数的格式设置为String。