2017-06-28 29 views
0

我想給給定的參數日期添加1天。如何給給定的參數日期添加1天?得到`java.util.Date不能轉換爲java.sql.Date`錯誤

的JasperSoft工作室我有以下參數

$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

郵政'.jrxml'的內容,如果允許。 –

回答

1

看起來像$P{datestart}參數的定義是錯誤的。

表達new java.sql.Date($P{datestart}.getTime() + 24*60*60*1000)是有效的,如果datestart參數具有java.util.Datejava.sql.Date類型。 正如你可能知道,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}java.sql.Date的:

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