将页面中格式为“2008-09-19 08:11:56.0”的字符串进行传递
<td class="STYLE2"><div align="center"><a href="d1_modify.jsp?RIQI=<%=rs.getString(3)%>"><%=NullToSpace.getNullcheck(rs.getString(4))%></a>&nbsp; </div></td>
注:RIQI=2008-09-19 08:11:56.0
获得参数代码:
sql="SELECT riqi,d1 FROM chaoweipingjun WHERE riqi='"+Template.replace(request.getParameter("RIQI")," ","+")+"'";
注:Template.replace()作用是把RIQI中的空格转化为'+',oracle中的时间格式已改为:yyyy-mm-dd   hh24:mi:ss     
错误代码:javax.servlet.ServletException: ORA-01861: 文字与格式字符串不匹配 org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:825)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:758)
org.apache.jsp.d1_005fmodify_jsp._jspService(d1_005fmodify_jsp.java:129)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配 oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1451)
oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:943)
oracle.jdbc.driver.OracleStatement.doExecuteQuery(OracleStatement.java:2126)
oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2331)
oracle.jdbc.driver.OracleStatement.doScrollStmtExecuteQuery(OracleStatement.java:6223)
oracle.jdbc.driver.OracleStatement.executeQuery(OracleStatement.java:640)
org.apache.jsp.d1_005fmodify_jsp._jspService(d1_005fmodify_jsp.java:91)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
应该怎么修改字符串的格式啊?

解决方案 »

  1.   

    to_date(RIQI,’yyyy-mm-dd hh24:mi:ss’)
      

  2.   


    把从页面传递过来的值换成'2008-09-20 11:57:41'这种形式。
    SELECT RIQI,D1 FROM CHAOWEIPINGJUN WHERE TO_DATE(RIQI,'YYYY-MM-DD HH24:MI:SS') = TO_DATE('2008-09-20 11:57:41','YYYY-MM-DD HH24:MI:SS');
      

  3.   

    我把程序改成SELECT RIQI,D1 FROM CHAOWEIPINGJUN WHERE TO_DATE(RIQI,'YYYY-MM-DD HH24:MI:SS') = TO_DATE('2008-09-20 11:57:41','YYYY-MM-DD HH24:MI:SS');
    还是出现同样的错误,在oracle中也不能执行;
    后来改成SELECT RIQI,D1 FROM CHAOWEIPINGJUN WHERE TO_DATE(RIQI,'YYYY-MM-DD HH24:MI:SS') = '2008-09-19 08:11:56.0';,在oracle中可以执行,可是放在jsp里还是java.sql.SQLException: ORA-01861: 文字与格式字符串不匹配 ,不知道为什么,oracle中的时间格式已经在注册表里改为:yyyy-mm-dd  hh24:mi:ss    
    还有其他的方法吗?
      

  4.   

    TO_DATE(RIQI,'YYYY-MM-DD HH24:MI:SS')  中的字段 RIQI是日期型的还是字符型的?如果是日期型的: ... WHERE RIQI = TO_DATE('2008-09-20 11:57:41','YYYY-MM-DD HH24:MI:SS'); 
      

  5.   

    数据库中的RIQI是date类型的。
      rs.getString("RIQI")在数据库里得到的date类型数据,
    RIQI=2008-09-20 16:49:21.0,可是点击这个<a href="d1_modify.jsp?RIQI= <%=rs.getString(3)%>">链接后,RIQI=2008-09-20%2016:49:21.0 ,多了%20三个字符,我搞不太明白怎么回事?应该做什么修改啊?