错误 - 无法在JFreeChart中将java.sql.Timestamp强制转换为java.sql.Date

时间:2013-11-21 19:26:36

标签: java sql jfreechart

当我从我的数据库中检索数据以使用JFreeChart添加到图表时,我收到错误:

java.sql.Timestamp cannot be cast to java.sql.Date

我有四列,使用案例正确检索前三列,但在通过最后一列时,它会转到正确的案例:

case Types.TIMESTAMP: {

但是这一部分发生了错误:

Date date = (Date) resultSet.getObject(column);

数据库中的数据格式如下(HH,MM,SS)。

编辑 - 还想添加这个类包含在JFreeCharts API中 - JDBCCategoryDataset.java

2 个答案:

答案 0 :(得分:8)

Date date = new Date(((Timestamp)resultSet.getObject(column)).getTime());

答案 1 :(得分:4)

首先,不要使用java.sql.Date时间 - 它不会产生您想要的结果......除非您希望将当前时区的时间设置为0

来自文档:

  

为了符合SQL DATE的定义,java.sql.Date实例包含的毫秒值必须通过在特定时区中将小时,分钟,秒和毫秒设置为零来“标准化”。实例是关联的。

另外,为什么要使用ResultSet.getObject并使用ResultSet.getDate()ResultSet.getTime()ResultSet.getTimestamp()来使用其中任何一个第二个。

然后,如果您必须使用日期对象,请按{/ 3}}进行

java.util.Date yourDate = new java.util.Date(resultSet.getTimestamp("Column").getTime());

或者如果它在数据库中作为字符串"(HH,MM,SS)",那么您可能想要获取一个字符串并使用格式化程序,如java.util.Date

SimpleDateFormat sdf = new SimpleDateFormat("(hh,MM,ss)");
Date aDate = sdf.parse(resultSet.getString("column");