从数据库中取时间值,报错: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🇲🇲ss)
if ("java.sql.Timestamp".equalsIgnoreCase(type)) {
//java.sql.Timestamp 处理逻辑
return DateUtil.timeToYmdHmsString((Date)result);
}

 

DateUtil 工具类如下:

public class DateUtil {
</span><span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">static</span> String defaultYmdHmsPattern = "yyyy-MM-dd HH🇲🇲ss"<span style="color: rgba(0, 0, 0, 1)">;

</span><span style="color: rgba(0, 128, 0, 1)">/**</span><span style="color: rgba(0, 128, 0, 1)">
 * 将Date转成 String,格式:yyyy-MM-dd HH🇲🇲ss
 * </span><span style="color: rgba(128, 128, 128, 1)">@param</span><span style="color: rgba(0, 128, 0, 1)"> date 日期类型
 * </span><span style="color: rgba(128, 128, 128, 1)">@return</span><span style="color: rgba(0, 128, 0, 1)"> String 日期格式的字符串
 </span><span style="color: rgba(0, 128, 0, 1)">*/</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">static</span><span style="color: rgba(0, 0, 0, 1)"> String timeToYmdHmsString(Date date) {
    SimpleDateFormat formatter </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> SimpleDateFormat(defaultYmdHmsPattern);
    </span><span style="color: rgba(0, 0, 255, 1)">return</span><span style="color: rgba(0, 0, 0, 1)"> formatter.format(date);
}

}