当我从我的数据库中检索数据以使用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 :(得分: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");