错误 - java.sql.Timestamp中不能转换为java.sql.Date中的JFreeChart

问题描述:

,而我检索从我的数据库中的数据添加到使用JFreeChart的,我得到了错误的图表:错误 - java.sql.Timestamp中不能转换为java.sql.Date中的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

+0

不要使用'java.sql.Date'存储时间,使用'java.util.Date'或使用'java.sql.Timestamp' –

+0

@JavaDevil我仍然得到这个错误后,即使将其更改为java.util.Date。错误:异常:java.sql.Timestamp不能转换为java.sql.Date – mussi89

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

我仍然得到相同的错误异常:java.sql.Timestamp不能转换为java.sql.Date – mussi89

+0

为我工作^^ – Sonata

首先,不使用的时候java.sql.Date - 它不会一代产量您想要的结果..除非你想你的时间设置为0当前时区

从文档:

To conform with the definition of SQL DATE, the millisecond values wrapped by a java.sql.Date instance must be 'normalized' by setting the hours, minutes, seconds, and milliseconds to zero in the particular time zone with which the instance is associated.

而且为什么要使用ResultSet.getObject,当您只需使用ResultSet.getDate()ResultSet.getTime()ResultSet.getTimestamp()时,您可以使用其中任何一个seocnd二。

然后,如果你必须使用一个Date对象,使java.util.Date像这样

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

,或者如果在数据库中的字符串"(HH,MM,SS)",那么你可能希望得到一个字符串,并使用格式化像SimpleDateFormat

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

I Still不明白为什么我会收到错误 - 异常:即使将java.sql.Timestamp更改为'java.util.Date',也不能将其转换为java.sql.Date @JavaDevil – mussi89

+0

什么是您所在列的数据类型检索?你做了什么来改变它?你是否明确地使用了'java.util.Date'来表示对象的数据类型和转换? –

+0

数据类型是数据库中的日期,当它通过大小写时,它被标识为时间戳,在时间戳情况下执行以下代码,包括您建议的上述内容:java.util.Date date = new java.util.Date(了ResultSet.getTimestamp(列).getTime()); \t \t \t \t Number value = new Long(date.getTime()); ----我只是改变了getTimeStamp中的“列”,因为它是被回想的属性。 @javaDevil – mussi89