Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java-创建oracle日期字段_Java_Oracle_Datetime - Fatal编程技术网

Java-创建oracle日期字段

Java-创建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

我有一个Oracle
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..谢谢这与我最终使用的代码几乎完全相同..我在你发布前一秒钟就解决了…所以我接受你的答案。谢谢,这几乎就是我最后使用的代码。我在你发布前一秒钟就计算出来了。所以我接受你的答案。谢谢