今天遇到个烦人的问题,昨天晚上调试完的方法,今天突然就报“ORA-01861: 文字与格式字符串不匹配”这个错误,找了半个小时才找到问题所在!
先来看这个问题,“ORA-01861: 文字与格式字符串不匹配”,很显然,就是操作数据库插入时数据格式不对,而大多都是时间数据的格式出问题,那我们挨个比对数据就OK了,也很容易。
然而就是这个时间问题,很容易出错。我们往页面返回时间的时候,想要得到的是"2017-05-29 12:42:21"这样的格式,所以要对时间进行处理,刚开始我处理的方法是在getter方法中直接转换成字符串的,但是这样就会造成一个问题,当代码进行持久化操作时,数据库get到的字段与数据库本身字段的格式就不匹配了。
正常的getter方法是这样的:
public Date getStartDate() {
return startDate;
}
我为了给页面返回"2017-05-29 12:42:21"这样的格式,是这么写的
public String getStartDate() {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
if (null != this.startDate) {
return sdf.format(this.startDate);
} else {
return "";
}
}
这样就造成了数据库得到的字段与本身格式不匹配,才会报错“ORA-01861: 文字与格式字符串不匹配”。
记录下来,以备后用。