2016-05-13 24 views
0

我已經創建了兩個輸入控制器BeginDate和EndDate作爲日期範圍類型。我需要將作爲日期範圍輸入的日期轉換爲util.date。這些是我創建的數據類型。如何使用日期範圍類型參數作爲普通java.util.date在jasper

<parameter name="BeginDate" class="net.sf.jasperreports.types.date.DateRange"/> 
<parameter name="EndDate" class="net.sf.jasperreports.types.date.DateRange"/> 

    <![CDATA[SELECT * 
FROM table 
WHERE $X{BETWEEN,date,BeginDate,EndDate} 
    AND total > 0;]]> 

我需要使用下面的日期。

<![CDATA[SELECT * 
    FROM table 
    WHERE 
date >= $P{BeginDate} AND 
date < $P{EndDate} 
     AND total > 0;]]> 
+0

DateRange只保存一個範圍,例如'5天'或'-1周'。如果你想選擇實際的日曆天/時間,你應該使用'Date'類。 – tobi6

回答

1

DateRange類型提供2種方法:getStart()getEnd()得到該範圍的開始和結束。這些方法返回java.util.Date對象,您可以繼續使用它們。

但由於DateRange類型沒有在查詢表達式允許你需要創建java.util.Date類型的新參數的使用,你想:

<parameter name="BeginDate_start" class="java.util.Date"> 
    <defaultValueExpression><![CDATA[$P{BeginDate}.getStart()]]></defaultValueExpression> 
</parameter> 
<parameter name="EndDate_end" class="java.util.Date"> 
    <defaultValueExpression><![CDATA[$P{EndDate}.getEnd()]]></defaultValueExpression> 
</parameter> 

然後將查詢可能看起來像這樣:

<queryString> 
    <![CDATA[SELECT * FROM table 
WHERE date >= $P{BeginDate_start} AND date < $P{EndDate_end} AND total > 0]]> 
</queryString> 
+0

是的,我已經得到了。非常感謝你.......!!!!! – Toshan

相關問題