从数据库中取时间值,报错: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.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🇲🇲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);
}
}