Java-创建oracle日期字段
我有一个OracleJava-创建oracle日期字段,java,oracle,datetime,Java,Oracle,Datetime,我有一个OracleDate类型,需要在其中插入当前日期 我正在使用Java生成此日期,但迄今为止我尝试的所有操作都会导致以下错误: java.sql.SQLException: ORA-01843: not a valid month 有人能推荐java代码来生成正确的日期吗 更新: 数据库中的日期看起来像2006年12月11日 因此,我尝试了以下方法: Calendar cal = Calendar.getInstance(); SimpleDateFormat sdf = new Sim
Date
类型,需要在其中插入当前日期
我正在使用Java生成此日期,但迄今为止我尝试的所有操作都会导致以下错误:
java.sql.SQLException: ORA-01843: not a valid month
有人能推荐java代码来生成正确的日期吗
更新:
数据库中的日期看起来像2006年12月11日
因此,我尝试了以下方法:
Calendar cal = Calendar.getInstance();
SimpleDateFormat sdf = new SimpleDateFormat("d-MMM-yy");
String date = sdf.format(cal.getTime());
这不起作用根据需要使用java.sql.Date或java.sql.Timestamp
java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());
根据需要,使用java.sql.Date或java.sql.Timestamp
java.sql.Date sqlDate = new java.sql.Date(new java.util.Date().getTime());
我建议您不要构建字符串查询(我猜您正在这样做),而是使用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();
我建议您不要构建字符串查询(我猜您正在这样做),而是使用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();
如果要使用日期的字符串版本进行查询,则可能需要添加Oracle to_date函数。您可以这样做(注意SimpleDataFormat中的额外d) 然后在查询中,您将
String query = "select * from table where date_column=to_date('" + date +"','dd-Mon-yy')";
如果要使用日期的字符串版本进行查询,则可能需要添加Oracle to_date函数。您可以这样做(注意SimpleDataFormat中的额外d) 然后在查询中,您将
String query = "select * from table where date_column=to_date('" + date +"','dd-Mon-yy')";
到目前为止你尝试了什么?到目前为止你尝试了什么?是的,我刚刚解决了问题。你是对的,我使用的是PreparedStatement,但是使用setString而不是setDate设置通配符…最后我使用了java.sql.Date..谢谢我刚刚解决了这个问题。你是对的,我使用的是PreparedStatement,但使用setString而不是setDate设置通配符…我最终使用了java.sql.Date..谢谢这与我最终使用的代码几乎完全相同..我在你发布前一秒钟就解决了…所以我接受你的答案。谢谢,这几乎就是我最后使用的代码。我在你发布前一秒钟就计算出来了。所以我接受你的答案。谢谢