如何将 1 天添加到给定的参数日期?出现“java.util.Date 无法转换为 java.sql.Date”错误

How to add 1 day to the given parameter date? Got `java.util.Date cannot be cast to java.sql.Date` error

我正在尝试将给定参数日期增加 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())

有人看到我做错了什么吗?

看来$P{datestart}参数的定义有误。

如果 datestart 参数有 java.util.Date,则表达式 new java.sql.Date($P{datestart}.getTime() + 24*60*60*1000) 有效java.sql.Date类型。 您可能知道,java.sql.Date class is a subclass of 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

此声明对 java.sql.Date$P{datestart} 有效:

<parameter name="datestart" class="java.sql.Date">
    <defaultValueExpression><![CDATA[new java.sql.Date(new java.util.Date().getTime())]]></defaultValueExpression>
</parameter>