从数据库中取时间值,报错:java.sql.Timestamp cannot be cast to java.lang.Long
1、问题描述
将数据库中的查询到的 timestamp类型的数据,转成 Long类型报错。
String type = result.getClass().getName(); if ("java.sql.Timstamp".equalsIgnoreCase(type)) { return new Date((Long) result); }
2、解决方案
因为 java.sql.Timestamp 是 java.util.Date 的子类;
所以,直接 将 java.sql.Timestamp 转换为 java.util.Date 类型 即可。
String type = result.getClass().getName(); if ("java.sql.Timestamp".equalsIgnoreCase(type)) { return (Date)result; }
或者将数据转成String类型输出:
String type = result.getClass().getName(); // 将 Timestamp 类型转换为 String类型(yyyy-MM-dd HH:mm:ss)
if ("java.sql.Timestamp".equalsIgnoreCase(type)) { //java.sql.Timestamp处理逻辑
return DateUtil.timeToYmdHmsString((Date)result); }
DateUtil 工具类如下:
public class DateUtil { private static String defaultYmdHmsPattern = "yyyy-MM-dd HH:mm:ss"; /** * 将Date转成 String,格式:yyyy-MM-dd HH:mm:ss * @param date 日期类型 * @return String 日期格式的字符串 */
public static String timeToYmdHmsString(Date date) { SimpleDateFormat formatter = new SimpleDateFormat(defaultYmdHmsPattern); return formatter.format(date); } }