我有一个 mysql 查询 jasper studio 报告。我有一个单独的日期时间日历表添加到 ii。我想要实现的是日期/月/年的任何更改也应该反映在报告表的输出中。查询如下:
select type, concat(DATE_FORMAT(date_time, '%d-%m-%Y'),' ', TIME_FORMAT(date_time, '%H:%i:%s'))as date_time,
count(type) as Number,
cast( ((count(type)/total.tot)*100) as decimal(5,2)) as Percentage from AUTHENT, (select count(type) as tot from AUTHEN) total
WHERE $X{[GREATER, date_time, datefrom} AND $X{LESS], date_time, dateto} group by type ,total.tot,date_time
编辑:字段和参数,(将评论移至问题)
<field name="type" class="java.lang.String"> <fieldDescription><![CDATA[]]></fieldDescription> </field>
<field name="date_time" class="java.lang.String"/>
<field name="Number" class="java.lang.Long"/>
<field name="Percentage" class="java.math.BigDecimal"/>
<parameter name="runDate" class="java.util.Date"> <defaultValueExpression><![CDATA[new Date()]]></defaultValueExpression> </parameter>
<parameter name="datefrom" class="java.util.Date"/>
<parameter name="dateto" class="java.util.Date">
我没有根据我们输入的日期获得记录的输出 在报告生成过程中datefrom
和dateto
。想知道出了什么问题吗?
您正在将java.sql.Timestamp
(日期和时间)与java.util.Date
(仅日期)进行比较,这并没有真正错误,但肯定会在datefrom
和dateto
中传递相同的日期,不会给出任何结果(不能同时>
和<
),并且几乎不会相等。
也许您应该考虑仅在日期上进行比较
WHERE DATE(date_time)>=DATE($P{datefrom}) AND DATE(date_time)<=DATE($P{dateto})