【问题标题】:ORA-01843 Not a Valid Month with Oracle SQLORA-01843 不是 Oracle SQL 的有效月份
【发布时间】:2012-05-15 19:50:34
【问题描述】:

我在我的程序中使用 sql 语句。

stringBuffer sql=new StringBuffer();
sql.append("insert into customer (id,createddate) ");
sql.append("values (1,");
sql.append("'"+new Timestamp(System.currentTimeMillis())+"'");

String results=jdbcTemplate.update(sql.toString();

当我执行上面的命令时,我得到了这个异常 嵌套异常是 java.sql.SQLException: ORA-01843: not a valid month

我应该绑定当前日期,我该如何解决这个问题。

谢谢。

【问题讨论】:

  • 不要使用字符串字面量。使用准备好的语句并传递 Timestamp 对象

标签: sql oracle date


【解决方案1】:

如果您可以使用数据库的日期,请使用sysdate 即:

stringBuffer sql=new StringBuffer();
sql.append("insert into customer (id,createddate) ");
sql.append("values (1,sysdate)");

或者您可以在查询中添加to_date

stringBuffer sql=new StringBuffer();
sql.append("insert into customer (id,createddate) ");
sql.append("values (1,to_date(");
sql.append("'"+<your TimeStamp converted to a String like yyyyMMddHHmmss>+"', 'yyyymmddhh24miss'");

或者使用 PreparedStatement 作为here

【讨论】:

  • +1 - 我打算开始一段关于格式化日期/时间等的长篇大论,等等,然后有一个严肃的“doh!”当我读到你的答案的那一刻。 :-)
猜你喜欢
  • 1970-01-01
  • 2016-11-07
  • 2022-01-22
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多