使用准备好的statemnt在oracle中插入日期

时间:2016-01-06 04:47:53

标签: java oracle jdbc oracle10g

我的用户界面将一个日期作为String(01/06/2016 2:30 am)返回给控制器,我想通过将其从字符串更改为日期和格式来插入 oracle 10数据库(dd-MMM-yy hh:mm:ss a)其中字段是日期类型。以下是我尝试的内容,但获得Illegal Argument例外。

在控制器I中格式化为日期并通过DTO将其传递给服务层

创建时间:01/06/2016 09:00

SimpleDateFormat fromUser = new SimpleDateFormat("MM/dd/yyyy hh:mm a");
SimpleDateFormat myFormat = new SimpleDateFormat("dd-MMM-yy hh:mm:ss a");

String reformattedStr = myFormat.format(fromUser.parse(created));
System.out.println("reformattedStr is : " + reformattedStr); 

** reformattedStr 06-Jan-16 09:00:00 PM

Date formateDate=myFormat.parse(reformattedStr);

通过准备好的声明服务我试图插入日期和其他字段。

stmt.setTimestamp(8,new java.sql.Timestamp(news.getCreated()。getTime()));

有人可以建议吗?

感谢您的帮助,我已经更新了代码,它可能对某些人有帮助。

1 个答案:

答案 0 :(得分:1)

如果列数据类型为timestamp,则无需对日期进行显式转换。 statement.setTimestamp()方法会处理它。

有两种方法可以从TimeStamp对象创建java.util.Date实例。

new TimeStamp(date.getTime())

TimeStamp.value(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(date))

news.getCreated().toString()方法返回的值可能无法返回格式正确的日期 - 如果它返回格式化日期。

有关详细信息,请参阅TimeStamp课程的 javadoc

由于