Jasper reports 在jasper中是否有任何方法可以消除只比较日期的时间?

Jasper reports 在jasper中是否有任何方法可以消除只比较日期的时间?,jasper-reports,Jasper Reports,我有两次约会。 第一是 &然后我得到了这样的场 <field name="duedate" class="java.util.Date"/> 但是PostgreSQL dueDate o/p的类型是java.sql.date 所以我声明的字段,将作为util.date工作吗?java.util.date有它自己的比较方法(compareTo()、after()、before()),它们也在Jasper中工作。因此,您可以尝试以下方法: $F{duedate}.compareTo

我有两次约会。 第一是

&然后我得到了这样的场

<field name="duedate" class="java.util.Date"/>

但是PostgreSQL dueDate o/p的类型是java.sql.date


所以我声明的字段,将作为util.date工作吗?

java.util.date有它自己的比较方法(compareTo()、after()、before()),它们也在Jasper中工作。因此,您可以尝试以下方法:

$F{duedate}.compareTo(new java.util.Date() == 0 ? "one" : "two" 
我现在可能想到的另一个可能的解决方案是在报表的查询中进行比较,如下所示:

SELECT
duedate as duedate,
CASE WHEN duedate == sysdate THEN "one" 
ELSE "two" END as comparison
FROM ....

但这并不能消除我所寻找的时间。是否仍然可以从新java.util.Date()中删除时间?标准方法是对日期对象应用特定格式:SimpleDataFormat sdf=new SimpleDataFormat(“yyyy-MM-dd”);datedatewithouttime=sdf.parse(sdf.format(newdate());您可以尝试的另一件事是从这个日期获取字符串(即:duedate.toString()和new java.util.Date().toString()),然后使用substring方法仅获取感兴趣的部分。例如,如果duedate返回字符串“2012/01/20 12:05:10.321”,则可以执行以下操作:string duedateString=duedate.substring(0,10);这似乎更多的是我将不得不在jrxml中执行的java编码逻辑。。。这可以在jrxml中完成吗&这样做明智吗?我还更新了问题。。。请看一看是的,Java代码也适用于jrxml,而且没有理由不建议使用这种方法,因为JasperReports是用Java构建的。如果使用诸如iReports之类的工具,您也可以轻松地使用它们,其中的编辑对话框可以选择使用Java方法。您甚至可以使用EL来获取duedate($F{duedate}),它隐式地调用java代码。对于数据类型问题,您可以尝试以下方法:java.sql.Date sqlDate=new java.sql.Date(new java.util.Date().getTime());
<field name="duedate" class="java.util.Date"/>
$F{duedate}.compareTo(new java.util.Date() == 0 ? "one" : "two" 
SELECT
duedate as duedate,
CASE WHEN duedate == sysdate THEN "one" 
ELSE "two" END as comparison
FROM ....