[ https://issues.apache.org/jira/browse/DERBY-4375?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12757460#action_12757460 ] Bryan Pendleton commented on DERBY-4375: ---------------------------------------- Thank you Knut and Mamta for tracking this down and resolving it. I was a little bit puzzled by the "11-30" part of the result, since as Knut observes, Month=0,Day=0 should be the month and day before 1/1, which in my mind is December 31, not November 30. Indeed, when I wrote this little program: Calendar c = Calendar.getInstance(); c.set(0, 0, 0, 12, 13, 14); System.out.println(c.getTime()); It prints Wed Dec 31 12:13:14 PST 0002 Which confirms Knut's understanding of the year 2 anomaly, and also computes December 31 for Month=0,day=0, which is what I expected. So I looked a little bit further and I see that when Timestamp.valueOf() parses its string argument and constructs its timestamp, it internally uses the constructor http://java.sun.com/j2se/1.4.2/docs/api/java/sql/Timestamp.html#Timestamp%28int,%20int,%20int,%20int,%20int,%20int,%20int%29 which expects that day_of_month is numbered from 1-31 but month is numbered from 0-11, so Timestamp.valueOf() subtracts 1 from the month, meaning that Timestamp.valueOf("0000-00-00 15:47:28.0")); is actually analogous to the Calendar code: c = Calendar.getInstance(); c.set(0, -1, 0, 12, 13, 14); System.out.println(c.getTime()); and *that* code, inded, prints: Sun Nov 30 12:13:14 PST 0002 All of this is a long and roundabout way of saying that I completely agree with everything Mamta and Knut discovered, but wanted to post this anyway just in case anyone else was wondering about the December 31 vs November 30 bit like I was. Here's my complete program, for the curious: import java.util.Calendar; import java.sql.Timestamp; public class Test { public static void main(String []args) { System.out.println(Timestamp.valueOf("0000-00-00 15:47:28.0")); Calendar c = Calendar.getInstance(); c.set(0, 0, 0, 12, 13, 14); System.out.println(c.getTime()); c.set(0, -1, 0, 12, 13, 14); System.out.println(c.getTime()); } } > WEME6.2 : Handful of test fixtures in InbetweenTest are failing with java.sql.SQLException: The syntax of the string representation of a datetime value is incorrect. > --------------------------------------------------------------------------------------------------------------------------------------------------------------------- > > Key: DERBY-4375 > URL: https://issues.apache.org/jira/browse/DERBY-4375 > Project: Derby > Issue Type: Bug > Components: Test > Affects Versions: 10.6.0.0 > Environment: weme 6.2 > Reporter: Mamta A. Satoor > Assignee: Mamta A. Satoor > Attachments: mamta.java, timeStampDiffValue.java > > > On weme6.2, 8 test fixtures from InBetweenTest are failing with following error > java.sql.SQLException: The syntax of the string representation of a datetime value is incorrect. > The failing test fixtures are > 1)testReproductionBeetle5135 > 2)testBeetle4316 > 3)testNestedQueries > 4)testCheckQueries > 5)testBigInList > 6)testInBetween > 7)testInList > 8)testBetween > The stack trace for testBetween looks as follows > 1) testBetween(org.apache.derbyTesting.functionTests.tests.lang.InbetweenTest)java.sql.SQLException: The syntax of the string representation of a datetime value is incorrect. > at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.wrapInSQLException(Unknown Source) > at org.apache.derby.impl.jdbc.TransactionResourceImpl.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedConnection.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.ConnectionChild.handleException(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeStatement(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.execute(Unknown Source) > at org.apache.derby.impl.jdbc.EmbedStatement.executeUpdate(Unknown Source) > at org.apache.derbyTesting.functionTests.tests.lang.InbetweenTest.createTestObjects(InbetweenTest.java:195) > at org.apache.derbyTesting.functionTests.tests.lang.InbetweenTest.testBetween(InbetweenTest.java:214) > at java.lang.reflect.AccessibleObject.invokeV(AccessibleObject.java:195) > at org.apache.derbyTesting.junit.BaseTestCase.runBare(BaseTestCase.java:109) > at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22) > at junit.extensions.TestSetup$1.protect(TestSetup.java:19) > at junit.extensions.TestSetup.run(TestSetup.java:23) > at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57) > at junit.extensions.TestDecorator.basicRun(TestDecorator.java:22) > at junit.extensions.TestSetup$1.protect(TestSetup.java:19) > at junit.extensions.TestSetup.run(TestSetup.java:23) > at org.apache.derbyTesting.junit.BaseTestSetup.run(BaseTestSetup.java:57) > Caused by: ERROR 22007: The syntax of the string representation of a datetime value is incorrect. > at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) > at org.apache.derby.iapi.types.DateTimeParser.parseInt(Unknown Source) > at org.apache.derby.iapi.types.SQLTimestamp.parseDateOrTimestamp(Unknown Source) > at org.apache.derby.iapi.types.SQLTimestamp.parseTimestamp(Unknown Source) > at org.apache.derby.iapi.types.SQLTimestamp.(Unknown Source) > at org.apache.derby.iapi.types.SQLChar.getTimestamp(Unknown Source) > at org.apache.derby.iapi.types.SQLChar.getTimestamp(Unknown Source) > at org.apache.derby.iapi.types.SQLTimestamp.setFrom(Unknown Source) > at org.apache.derby.iapi.types.DataType.setValue(Unknown Source) > at org.apache.derby.iapi.types.DataType.normalize(Unknown Source) > at org.apache.derby.iapi.types.DataTypeDescriptor.normalize(Unknown Source) > at org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeColumn(Unknown Source) > at org.apache.derby.impl.sql.execute.NormalizeResultSet.normalizeRow(Unknown Source) > at org.apache.derby.impl.sql.execute.NormalizeResultSet.getNextRowCore(Unknown Source) > at org.apache.derby.impl.sql.execute.DMLWriteResultSet.getNextRowCore(Unknown Source) > at org.apache.derby.impl.sql.execute.InsertResultSet.open(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.executeStmt(Unknown Source) > at org.apache.derby.impl.sql.GenericPreparedStatement.execute(Unknown Source) > ... 39 more > -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.