ORA-01861: 文字与格式字符串不匹配
spring + mybatis中日期格式提交出现错误。执行update时,日期格式死活不通过
错误信息:ORA-01861: 文字与格式字符串不匹配
解决方法:
update HBB_CC_CONTRACT_TC
SET STARTDATE =to_date(to_char(#{startdate}, 'yyyy-mm-dd hh24:mi:ss'), 'yyyy-mm-dd hh24:mi:ss')
where ID = #{id}
在mybatis 的xml中 用Oracle中执行update 格式化日期,需要先将java日期对象转换为 字符串,然后再把字符串转换为oracle日期对象,方可。
spring、springmvc、springboot等日期格式转换错误
spring、springmvc、springboot不能绑定个性化的日期格式参数到 实体bean。会报参数绑定错误。如 "yyyy-MM-dd hh:mm:ss"的常用日期格式提交给 spring 的controller进行自动转换时,则会转换异常。须要手动转换格式,代码如下(在spring的Controller类中添加如下代码即可):
@InitBinder
public void initBinder(WebDataBinder binder) {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true)); // true:允许输入空值,false:不能为空值
}
另外EasyUI中日期对象的格式化:
html:
<input id="enddate" name="enddate" type="text" value="${tc.enddate}"
data-options="formatter:myformatter,parser:myparser"
class="easyui-datetimebox" required="required" />
js(以下js最好放在html的最上边,保证data-option执行时已经存在对应的函数):
function myformatter(date){
var y = date.getFullYear(); var m = date.getMonth()+1;
var d = date.getDate();
var h = date.getHours() ;h= h<10?'0'+h:h;
var mm = date.getMinutes();mm= mm<10?'0'+mm:mm;
var ss = date.getSeconds();ss= ss<10?'0'+ss:ss;
return y+'-'+(m<10?('0'+m):m)+'-'+(d<10?('0'+d):d) +' '+h+':'+mm+':'+ss;
}
function myparser(s){
if (!s) return new Date(); return new Date(s);
}