oracle插入日期类型数据出现ORA-01861: 文字与格式字符串不匹配 ,求解决方法

时间:2021-10-12 07:47:07
 String iD= request.getParameter("id");
String name = request.getParameter("name");
String englishName = request.getParameter("englishName");
String age = request.getParameter("age");
String birthday = request.getParameter("birthday");
String sex = request.getParameter("sex");
String description = request.getParameter("description");
String createTime = "2011-09-14";
//Date date=new Date();
    SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd");
  //  df1.setLenient(false);
    java.sql.Date birth = new java.sql.Date( df1.parse(birthday).getTime());



String action = request.getParameter("action");

if("add".equals(action)){

// INSERT SQL 语句
String sql = "INSERT INTO tb_person " +
" ( id,name, english_name, " +
"   age, sex, birthday,  " +
"   description ) values " +
" ( " + iD+ ",  '" + forSQL(name) + "', '" + forSQL(englishName) + "', " +
"   " + age + ", '" + sex + "', '" +birth + "', " +
"   '" + forSQL(description)+"' ) " ;

7 个解决方案

#1


-- 文字是什么文字?格式是什么格式?必须一一对应起来,例如:
'2011-05-30' 对应:'yyyy-mm-dd',也就是说:2011 对应 yyyy ;05 对应 mm ;30 对应 dd,

-- 其年部分、月部分、日部分 的位置必须一一对应!(同理:时、分、秒)

#2


你数据库中是用的什么类型?

#3


路过,拿积分,为了下载资料。。。

#4


+ birth +

-->
--假设时间格式为yyyy-mm-dd,如果不是,自己更改时间格式即可.
+ to_date(birth,'yyyy-mm-dd') +

#5


用to_date函数

#6


得用转换函数吧……日期转文本:to_char;文本转日期:to_date

#7


引用 4 楼 dawugui 的回复:
+ birth +

-->
--假设时间格式为yyyy-mm-dd,如果不是,自己更改时间格式即可.
+ to_date(birth,'yyyy-mm-dd') +


正解  

#1


-- 文字是什么文字?格式是什么格式?必须一一对应起来,例如:
'2011-05-30' 对应:'yyyy-mm-dd',也就是说:2011 对应 yyyy ;05 对应 mm ;30 对应 dd,

-- 其年部分、月部分、日部分 的位置必须一一对应!(同理:时、分、秒)

#2


你数据库中是用的什么类型?

#3


路过,拿积分,为了下载资料。。。

#4


+ birth +

-->
--假设时间格式为yyyy-mm-dd,如果不是,自己更改时间格式即可.
+ to_date(birth,'yyyy-mm-dd') +

#5


用to_date函数

#6


得用转换函数吧……日期转文本:to_char;文本转日期:to_date

#7


引用 4 楼 dawugui 的回复:
+ birth +

-->
--假设时间格式为yyyy-mm-dd,如果不是,自己更改时间格式即可.
+ to_date(birth,'yyyy-mm-dd') +


正解