infrasafe
asked on
Hibernate Query Error - Date Formatting
This is my query:
Select id, last_name, first_name from info where in_time >= '2008-03-12 00:00 AM' and in_time <='2008-12-18 00:00 AM'
It is simple and it worked before. We have several people working on this project and I cannot determine what caused it to stop working. I can run this fine in query analyzer, yet in my application, I get the following error.
2008-11-03 17:10:45,906 [JDBCExceptionReporter] ERROR - Syntax error converting datetime from character string.
2008-11-03 17:10:45,921 [InfoHandler] ERROR - could not execute query
2008-11-03 17:10:45,921 [InfoHandler] ERROR - Initiating rollback
2008-11-03 17:10:45,921 [InfoHandler] ERROR - could not execute query
2008-11-03 17:10:45,921 [InfoHandler] ERROR - org.hibernate.exception.Da taExceptio n: could not execute query
at org.hibernate.exception.SQ LStateConv erter.conv ert(SQLSta teConverte r.java:75)
at org.hibernate.exception.JD BCExceptio nHelper.co nvert(JDBC ExceptionH elper.java :43)
at org.hibernate.loader.Loade r.doList(L oader.java :2150)
at org.hibernate.loader.Loade r.listIgno reQueryCac he(Loader. java:2026)
at org.hibernate.loader.Loade r.list(Loa der.java:2 021)
at org.hibernate.loader.custo m.CustomLo ader.list( CustomLoad er.java:10 9)
at org.hibernate.impl.Session Impl.listC ustomQuery (SessionIm pl.java:15 47)
at org.hibernate.impl.SQLQuer yImpl.list (SQLQueryI mpl.java:1 65)
at com.info.dataObjects.persi stence.Inf oHandler.S earchInfo( InfoHandle r.java:321 )
at com.info.actions.InfoActio n.Info(Inf oAction.ja va:175)
at sun.reflect.NativeMethodAc cessorImpl .invoke0(N ative Method)
at sun.reflect.NativeMethodAc cessorImpl .invoke(Na tiveMethod AccessorIm pl.java:39 )
at sun.reflect.DelegatingMeth odAccessor Impl.invok e(Delegati ngMethodAc cessorImpl .java:25)
at java.lang.reflect.Method.i nvoke(Meth od.java:58 5)
at org.apache.struts.actions. DispatchAc tion.dispa tchMethod( DispatchAc tion.java: 274)
at org.apache.struts.actions. DispatchAc tion.execu te(Dispatc hAction.ja va:194)
at org.apache.struts.action.R equestProc essor.proc essActionP erform(Req uestProces sor.java:4 19)
at org.apache.struts.action.R equestProc essor.proc ess(Reques tProcessor .java:224)
at org.apache.struts.action.A ctionServl et.process (ActionSer vlet.java: 1194)
at org.apache.struts.action.A ctionServl et.doPost( ActionServ let.java:4 32)
at javax.servlet.http.HttpSer vlet.servi ce(HttpSer vlet.java: 763)
at javax.servlet.http.HttpSer vlet.servi ce(HttpSer vlet.java: 856)
at org.apache.catalina.core.A pplication FilterChai n.internal DoFilter(A pplication FilterChai n.java:237 )
at org.apache.catalina.core.A pplication FilterChai n.doFilter (Applicati onFilterCh ain.java:1 57)
at org.apache.catalina.core.S tandardWra pperValve. invoke(Sta ndardWrapp erValve.ja va:214)
at org.apache.catalina.core.S tandardVal veContext. invokeNext (StandardV alveContex t.java:104 )
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:520)
at org.apache.catalina.core.S tandardCon textValve. invokeInte rnal(Stand ardContext Valve.java :198)
at org.apache.catalina.core.S tandardCon textValve. invoke(Sta ndardConte xtValve.ja va:152)
at org.apache.catalina.core.S tandardVal veContext. invokeNext (StandardV alveContex t.java:104 )
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:520)
at org.apache.catalina.core.S tandardHos tValve.inv oke(Standa rdHostValv e.java:137 )
at org.apache.catalina.core.S tandardVal veContext. invokeNext (StandardV alveContex t.java:104 )
at org.apache.catalina.valves .ErrorRepo rtValve.in voke(Error ReportValv e.java:117 )
at org.apache.catalina.core.S tandardVal veContext. invokeNext (StandardV alveContex t.java:102 )
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:520)
at org.apache.catalina.core.S tandardEng ineValve.i nvoke(Stan dardEngine Valve.java :109)
at org.apache.catalina.core.S tandardVal veContext. invokeNext (StandardV alveContex t.java:104 )
at org.apache.catalina.core.S tandardPip eline.invo ke(Standar dPipeline. java:520)
at org.apache.catalina.core.C ontainerBa se.invoke( ContainerB ase.java:9 29)
at org.apache.coyote.tomcat5. CoyoteAdap ter.servic e(CoyoteAd apter.java :160)
at org.apache.coyote.http11.H ttp11Proce ssor.proce ss(Http11P rocessor.j ava:793)
at org.apache.coyote.http11.H ttp11Proto col$Http11 Connection Handler.pr ocessConne ction(Http 11Protocol .java:702)
at org.apache.tomcat.util.net .TcpWorker Thread.run It(PoolTcp Endpoint.j ava:571)
at org.apache.tomcat.util.thr eads.Threa dPool$Cont rolRunnabl e.run(Thre adPool.jav a:644)
at java.lang.Thread.run(Threa d.java:595 )
Caused by: java.sql.SQLException: Syntax error converting datetime from character string.
at net.sourceforge.jtds.jdbc. SQLDiagnos tic.addDia gnostic(SQ LDiagnosti c.java:364 )
at net.sourceforge.jtds.jdbc. TdsCore.td sErrorToke n(TdsCore. java:2778)
at net.sourceforge.jtds.jdbc. TdsCore.ne xtToken(Td sCore.java :2214)
at net.sourceforge.jtds.jdbc. TdsCore.is DataInResu ltSet(TdsC ore.java:7 63)
at net.sourceforge.jtds.jdbc. JtdsResult Set.<init> (JtdsResul tSet.java: 147)
at net.sourceforge.jtds.jdbc. JtdsStatem ent.execut eSQLQuery( JtdsStatem ent.java:3 46)
at net.sourceforge.jtds.jdbc. JtdsPrepar edStatemen t.executeQ uery(JtdsP reparedSta tement.jav a:665)
at org.hibernate.jdbc.Abstrac tBatcher.g etResultSe t(Abstract Batcher.ja va:137)
at org.hibernate.loader.Loade r.getResul tSet(Loade r.java:167 6)
at org.hibernate.loader.Loade r.doQuery( Loader.jav a:662)
at org.hibernate.loader.Loade r.doQueryA ndInitiali zeNonLazyC ollections (Loader.ja va:223)
at org.hibernate.loader.Loade r.doList(L oader.java :2147)
... 43 more
Select id, last_name, first_name from info where in_time >= '2008-03-12 00:00 AM' and in_time <='2008-12-18 00:00 AM'
It is simple and it worked before. We have several people working on this project and I cannot determine what caused it to stop working. I can run this fine in query analyzer, yet in my application, I get the following error.
2008-11-03 17:10:45,906 [JDBCExceptionReporter] ERROR - Syntax error converting datetime from character string.
2008-11-03 17:10:45,921 [InfoHandler] ERROR - could not execute query
2008-11-03 17:10:45,921 [InfoHandler] ERROR - Initiating rollback
2008-11-03 17:10:45,921 [InfoHandler] ERROR - could not execute query
2008-11-03 17:10:45,921 [InfoHandler] ERROR - org.hibernate.exception.Da
at org.hibernate.exception.SQ
at org.hibernate.exception.JD
at org.hibernate.loader.Loade
at org.hibernate.loader.Loade
at org.hibernate.loader.Loade
at org.hibernate.loader.custo
at org.hibernate.impl.Session
at org.hibernate.impl.SQLQuer
at com.info.dataObjects.persi
at com.info.actions.InfoActio
at sun.reflect.NativeMethodAc
at sun.reflect.NativeMethodAc
at sun.reflect.DelegatingMeth
at java.lang.reflect.Method.i
at org.apache.struts.actions.
at org.apache.struts.actions.
at org.apache.struts.action.R
at org.apache.struts.action.R
at org.apache.struts.action.A
at org.apache.struts.action.A
at javax.servlet.http.HttpSer
at javax.servlet.http.HttpSer
at org.apache.catalina.core.A
at org.apache.catalina.core.A
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.valves
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.S
at org.apache.catalina.core.C
at org.apache.coyote.tomcat5.
at org.apache.coyote.http11.H
at org.apache.coyote.http11.H
at org.apache.tomcat.util.net
at org.apache.tomcat.util.thr
at java.lang.Thread.run(Threa
Caused by: java.sql.SQLException: Syntax error converting datetime from character string.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at net.sourceforge.jtds.jdbc.
at org.hibernate.jdbc.Abstrac
at org.hibernate.loader.Loade
at org.hibernate.loader.Loade
at org.hibernate.loader.Loade
at org.hibernate.loader.Loade
... 43 more
ASKER
I tried that before, thinking that was the problem, but it did not work. However, I did use a different datetime style code than what you used. I cut and pasted what you provided and I received the same error. I cannot make any sense out of it.
Then the query you are executing is not passing the dates in the same format that you are posting. I would suggest running SQL profiler to capture the ACTUAL call.
Because if you run this query, you should see that the conversion IS correct.
select convert(datetime, '2008-03-12 00:00 AM', 20), convert(datetime, '2008-12-18 00:00 AM', 20)
Because if you run this query, you should see that the conversion IS correct.
select convert(datetime, '2008-03-12 00:00 AM', 20), convert(datetime, '2008-12-18 00:00 AM', 20)
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
I still think you MAY run into problems because '2008-12-18 00 AM' is not a recognized SQL Server DATE format. If you are passing a string containing a date into SQL server, you should always specify the format.
Open in new window