从数据库中取时间值,报错:java.sql.Timestamp cannot be cast to java.lang.Long

从数据库中取时间值,报错: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.Timestampjava.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);
    }
}
原文地址:https://www.cnblogs.com/miracle-luna/p/15694727.html