我们的报告使用 iReport 设计器以及 JasperReports Serer 完美运行。
我对底层的 MySQL 存储过程做了一些小的修改,并相应地调整了报表结构,现在我可以从Designer界面运行报表,但根本不能从服务器运行。< / p>
我收到如下错误:
Error Message
java.lang.ClassCastException: java.lang.String cannot be cast to java.util.Date
我理解这是我们在报告中使用的日期之一的问题,但我所知道的日期信息都没有改变。
我首先要附上报告和存储过程的顶部:
DELIMITER $$
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_fasb`(start_date varchar(10), end_date varchar(10), loc varchar(45))
BEGIN
declare friday_end_date varchar(10);
declare in_str varchar(255);
if dayofweek(end_date) = 7 then
SET friday_end_date = date_add(end_date, interval 6 day);
else
SET friday_end_date = date_add(end_date, interval (6-dayofweek(end_date)) day);
end if;
if dayofweek(end_date) = 7 then
SET end_date = date_add(end_date, interval -1 day);
end if;
if dayofweek(end_date) = 1 then
SET end_date = date_add(end_date, interval -2 day);
end if;
感谢任何建议。
答案 0 :(得分:1)
根据我的看法,所有date
数据类型都是varchar(10)
。
由于您使用的是date_add函数,因此不能将'start_date'作为字符串。
在MYSQL上尝试此操作时
SELECT date_add(curdate(), interval 6 day);
Result:2013-05-06
但是当你尝试
时SELECT date_add('2013-04-30', interval 6 day);
You do not get any result or you get 'BLOB'
这意味着它期望在函数内部有一个Date数据类型的变量。
同样在您的报告中,您可能将输入参数定义为java.util.Date。 您可能想要更改它,看看这是否是输入参数的问题。 这也可能是个问题。
希望这有帮助。!