个人觉得Oracle在日期类型对象方面,自己的JDBC驱动不兼顾JDK的标准类,其实是为了数据安全考虑,毕竟Date不是基础数量类型,不知道jdk啥时候能将Date归为基础数据类型,像String,Integer一样使用。
我想好多朋友遇到过此类问题。这里不再详述。
个人的解决方案:
private String getDate(Object value) {
Timestamp timestamp = null;
try {
timestamp = (Timestamp) value;
} catch (Exception e) {
timestamp = getOracleTimestamp(value);
}
if(timestamp!=null)
return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S")) .format(timestamp);
else return null;
}
/**
* @reference oracle.sql.Datum.timestampValue();
* @return
*/
private Timestamp getOracleTimestamp(Object value) {
try {
Class clz = value.getClass();
Method m = clz.getMethod("timestampValue", null);
//m = clz.getMethod("timeValue", null); 时间类型
//m = clz.getMethod("dateValue", null); 日期类型
return (Timestamp) m.invoke(value, null);
} catch (Exception e) {
return null;
}
}
我想好多朋友遇到过此类问题。这里不再详述。
个人的解决方案:
private String getDate(Object value) {
Timestamp timestamp = null;
try {
timestamp = (Timestamp) value;
} catch (Exception e) {
timestamp = getOracleTimestamp(value);
}
if(timestamp!=null)
return (new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S")) .format(timestamp);
else return null;
}
/**
* @reference oracle.sql.Datum.timestampValue();
* @return
*/
private Timestamp getOracleTimestamp(Object value) {
try {
Class clz = value.getClass();
Method m = clz.getMethod("timestampValue", null);
//m = clz.getMethod("timeValue", null); 时间类型
//m = clz.getMethod("dateValue", null); 日期类型
return (Timestamp) m.invoke(value, null);
} catch (Exception e) {
return null;
}
}