request.getParameter字符串值作为日期传递给java

request.getParameter字符串值作为日期传递给java,java,jsp,date,oracle10g,Java,Jsp,Date,Oracle10g,在我的JSP页面中,我有一个字段,它是date和when,作为request.getParameter(“dateVal”)给了我 15-Dec-2012 12:21. 我想把这个值传递给我的数据库过程并插入/更新到表中。 如何使用prepareCall将值作为setDate传递到数据库 谢谢第一步是将其解析为控制器中的完整实例: Date date = new SimpleDateFormat("dd-MMM-yyyy HH:mm.", Locale.ENGLISH).parse(dateV

在我的JSP页面中,我有一个字段,它是date和when,作为
request.getParameter(“dateVal”)给了我

15-Dec-2012 12:21.
我想把这个值传递给我的数据库过程并插入/更新到表中。 如何使用
prepareCall
将值作为
setDate
传递到数据库

谢谢

第一步是将其解析为控制器中的完整实例:

Date date = new SimpleDateFormat("dd-MMM-yyyy HH:mm.", Locale.ENGLISH).parse(dateVal);
然后,您可以在数据库层中围绕时间创建一个:

statement.setDate(1, new java.sql.Date(date.getTime()));

与具体问题无关请注意,
java.sql.Date
不记得时间部分。如果数据库中实际上有一个
DATETIME
TIMESTAMP
字段,而不是
DATE
字段,则应使用
setTimestamp()
java.sql.TIMESTAMP
代替。这样,时间部分也将被存储。

尝试以下方法:


newsimpledateformat(“dd-MM-yyy-HH:MM”).parse(mydate)

@BalusC的答案很完美。但作为替代解决方案,您可以在查询时使用数据库提供的函数将字符串转换为日期。例如(如果您使用Oracle)


为什么是dd-MMM-yyy-HH:mm''“,应该是dd-MMM-yyyy-HH:mm:ss,对吗?你不是这样显示的
dateVal
。这是
2012年12月15日12:21。
而不是
2012年12月15日12:21:00
。如果您不了解如何使用
SimpleDateFormat
,请单击我答案中的链接。为什么您在制定问题时如此粗心?无论如何,您现在至少应该了解如何正确使用
SimpleDateFormat
java.sql.Date
了。我得到的日期是
15-Dec-2012 16:36
,然后在
java.util.Date日期=新的SimpleDateFormat(“dd-MMM-yyy-HH:mm”,Locale.ENGLISH).parse(dateVal)之后我得到的日期为
2012-12-15
。原因可能是什么?谢谢,到目前为止我还不明白你的具体问题。到底是什么问题?日期的格式是什么?这到底是个什么问题?在向人类显示Java日期对象时,只需使用
SimpleDataFormat#format()
重新格式化即可?
to_date(date_in_String, format)