Bug #23424 com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '2' f
Submitted: 18 Oct 2006 14:45 Modified: 18 Oct 2006 16:08
Reporter: Sasi Levi Email Updates:
Status: Not a Bug Impact on me:
None 
Category:Connector / J Severity:S2 (Serious)
Version: OS:Windows (WIN XP)
Assigned to: CPU Architecture:Any

[18 Oct 2006 14:45] Sasi Levi
Description:
Assume that I got this query:
String s = "INSERT INTO tbl (date1) VALUES(?);";

(In the DB the field is a Date).
PreparedStatement pstmt = (PreparedStatement) con.prepareStatement(s);

Now, I want to initializing the values:
pstmt.setDate(1, new Date(20061018)); //not work
pstmt.setLong(1, 20061018); //not work
pstmt.setString(1, "20061018"); //not work
pstmt.setObject(1, 20061018); //not work

None of those options work, I always got the exception (Is this a bug?):

14:15:34,509 INFO  [STDOUT] com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '2' for column 'FROM_DATE' at row 1
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:2868)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1573)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.ServerPreparedStatement.serverExecute(ServerPreparedStatement.java:1160)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.ServerPreparedStatement.executeInternal(ServerPreparedStatement.java:685)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1400)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1314)
14:15:34,509 INFO  [STDOUT] 	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1299)
14:15:34,509 INFO  [STDOUT] 	at com.identify.qa.lab.servlets.PickComputer.addPickComputer(PickComputer.java:106)
14:15:34,509 INFO  [STDOUT] 	at com.identify.qa.lab.servlets.PickComputer.doGet(PickComputer.java:60)
14:15:34,509 INFO  [STDOUT] 	at com.identify.qa.lab.servlets.PickComputer.service(PickComputer.java:28)
14:15:34,509 INFO  [STDOUT] 	at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
14:15:34,509 INFO  [STDOUT] 	at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:81)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
14:15:34,509 INFO  [STDOUT] 	at org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipalValve.java:39)
14:15:34,509 INFO  [STDOUT] 	at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:153)
14:15:34,509 INFO  [STDOUT] 	at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:59)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
14:15:34,509 INFO  [STDOUT] 	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
14:15:34,509 INFO  [STDOUT] 	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
14:15:34,509 INFO  [STDOUT] 	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
14:15:34,509 INFO  [STDOUT] 	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
14:15:34,509 INFO  [STDOUT] 	at org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorkerThread.java:112)
14:15:34,509 INFO  [STDOUT] 	at java.lang.Thread.run(Thread.java:595)

How to repeat:
Try to make query with date and insert value.
In the DB you should create field with Date.
[18 Oct 2006 15:47] Mark Matthews
Sasi,

What date are you actually trying to insert? I hope you realize that the first argument to the date constructor is the number of milliseconds since the "epoch", and the date you're constructing is actually 1969-12-31.
[18 Oct 2006 16:08] Sasi Levi
Not a bug, I looked again on the documents.