ORA-01861: 文字与格式字符串不匹配(Oracle、Spring 时间格式问题)

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:

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);

}

你可能感兴趣的:(ORA-01861: 文字与格式字符串不匹配(Oracle、Spring 时间格式问题))