我想在给定的参数日期添加1天。
在 Jaspersoft Studio 中,我有以下参数
$P{datestart}
Class: java.sql.Date
Default value expression: new Date()
$V{datev}
Class: java.sql.Date
Expression: new java.sql.Date($P{datestart}.getTime() + 24*60*60*1000)
然后我在报告中使用$V{datev}
。
输出错误:
Error evaluating expression for source text:
new java.sql.Date($P{datestart}.getTime() + 24*60*60*1000)
java.util.Date cannot be cast to java.sql.Date
我尝试了不同的表达但没有运气
Change $v{datev} to new java.util.Date($P{datestart}.getTime() + 24*60*60*1000).
Change $P{datestart} to: new SimpleDateFormat("dd-MM-yyyy").format(new Date())
有人看到我做错了什么吗?
答案 0 :(得分:1)
看起来$P{datestart}
参数的定义是错误的。
如果 datestart 参数具有 java.util.Date 或 java.sql.Date 类型,则表达式new java.sql.Date($P{datestart}.getTime() + 24*60*60*1000)
有效。
您可能知道,java.sql.Date类是java.util.Date
此 Java 代码运行良好:
java.util.Date date = new java.util.Date();
new java.sql.Date(date.getTime() + 24*60*60*1000);
java.sql.Date sqlDate = new java.sql.Date(date.getTime());
new java.sql.Date(sqlDate.getTime() + 24*60*60*1000);
尝试更改 datestart 的类型,甚至更改两者(参数和变量)的类型。
至少你需要修复 datestart 参数的初始化。
没有java.sql.Date()
(没有参数)构造函数。看起来你正在使用类似 Java 代码的表达式,如下所示:
java.sql.Date sqlDate = new java.util.Date(); // not even compile. Got incompatible types: java.util.Date cannot be converted to java.sql.Date
此声明适用于$P{datestart}
的{{1}}:
java.sql.Date