Java - 创建一个oracle日期字段

时间:2010-04-22 12:31:31

标签: java oracle datetime

我有一个Oracle Date类型,我需要插入当前日期。

我正在使用Java来生成这个日期,但到目前为止我尝试的所有内容都会出现以下错误:

java.sql.SQLException: ORA-01843: not a valid month

有人建议使用java代码来生成合适的日期吗?

更新

数据库中的日期看起来像11-DEC-06

所以,我尝试了以下内容:

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("d-MMM-yy");
String date = sdf.format(cal.getTime());

这不起作用

3 个答案:

答案 0 :(得分:3)

我建议不要构建字符串查询(我猜你正在做),而是使用PreparedStatement,这通常更容易(特别是像这样的事情)以及更安全:

String rowToUpdate = "foo";
PreparedStatement ps = myConnection.prepareStatement(
      "UPDATE my_table SET date_field=? WHERE id=?");
Calendar cal = Calendar.getInstance();
java.sql.Date sqlDate = new java.sql.Date(cal.getTime().getTime());
ps.setDate(1, sqlDate);
ps.setString(2, rowToUpdate);
int updated = ps.executeUpdate();

答案 1 :(得分:0)

使用java.sql.Date或java.sql.Timestamp,具体取决于您的要求。

java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());

答案 2 :(得分:0)

如果要使用日期的String版本进行查询,则可能需要添加Oracle to_date函数。你可以这样做(注意SimpleDateFormat中的额外d)

Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("dd-MMM-yy");
String date = sdf.format(cal.getTime());

然后在查询中你会把

String query = "select * from table where date_column=to_date('" + date +"','dd-Mon-yy')";