0

我们有一个使用iReport设计器和JasperReports Serer完美运行的报表。

我对底层的MySQL存储过程做了一些小的修改,并相应地调整了报表结构,现在我可以从 Designer 界面运行报表,但根本不能从服务器运行。

我收到如下错误:

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;

感谢任何建议。

4

1 回答 1

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。您可能想要更改它,看看这是否是输入参数的问题。这也可能是一个问题。

希望这可以帮助。!

于 2013-04-30T06:27:00.893 回答