Ok, great. Thanks.
On 15 December 2014 at 19:46, Thomas Mueller <[email protected]> wrote: > > Hi, > > You get the same behavior if you do: > > TimeZone.setDefault(TimeZone.getTimeZone("EET")); > Timestamp d = new Timestamp(1351382400000L); > System.out.println(d + " " + d.getTime()); > Timestamp d2 = Timestamp.valueOf(d.toString()); > System.out.println(d2 + " " + d2.getTime()); > System.out.println("difference " + (d.getTime() - d2.getTime())); > > 2012-10-28 03:00:00.0 1351382400000 > 2012-10-28 03:00:00.0 1351386000000 > difference -3600000 > > So I don't consider this a bug of H2. You could call it a bug of the Java > date / time processing, or at least unexpected behavior. > > With H2, if you _don't_ use java.sql.Timestamp, but instead use String > (even with "timestamp" data types), then you will not see this behavior. > > Regards, > Thomas > > > > On Friday, November 28, 2014, Rob Bygrave <[email protected]> wrote: > >> Hi, >> >> So I have a test that is now failing when upgrading from 1.3.153 >> to 1.4.182 >> >> The test code is: >> >> >> @Test >> public void testDirect() throws SQLException { >> >> // For it to fail, the time has to match the time at which the >> daylight saving changes >> // are applied in that time zone. Therefore specify it explicitly. >> >> // Get a connection ... >> EbeanServer server = Ebean.getServer(null); >> Transaction transaction = server.createTransaction(); >> Connection connection = transaction.getConnection(); >> >> PreparedStatement pstmt = connection.prepareStatement("create table >> dls_test (id bigint auto_increment not null, myts timestamp)"); >> pstmt.execute(); >> pstmt.close(); >> >> TimeZone defaultTimeZone = TimeZone.getDefault(); >> try { >> >> TimeZone.setDefault(TimeZone.getTimeZone("EET")); >> >> // Run the code and see how there is a 3600 second change >> Timestamp daylightSavingDate = new Timestamp(1351382400000l); >> // On a second run comment in the following date and see >> // how there is a 0 second change >> // daylightSavingDate = new Date(1361382400000l); >> >> pstmt = connection.prepareStatement("insert into dls_test (myts) >> values (?)"); >> pstmt.setTimestamp(1, daylightSavingDate); >> assertEquals(1, pstmt.executeUpdate()); >> pstmt.close(); >> >> pstmt = connection.prepareStatement("select myts from dls_test "); >> ResultSet rset = pstmt.executeQuery(); >> rset.next(); >> Timestamp timestampBack = rset.getTimestamp(1); >> pstmt.close(); >> rset.close(); >> >> >> long diffMillis = daylightSavingDate.getTime() - >> timestampBack.getTime(); >> >> System.out.println(" --- the date i put in : " + >> daylightSavingDate); >> System.out.println(" as millis : " + >> daylightSavingDate.getTime()); >> System.out.println(" --- the date i get back : " + timestampBack); >> System.out.println(" as millis : " + >> timestampBack.getTime()); >> System.out.println("The difference is " + diffMillis / 1000 + " >> seconds"); >> >> assertEquals(0L, diffMillis); >> >> } finally { >> TimeZone.setDefault(defaultTimeZone); >> } >> >> } >> >> >> >> Using version 1.3.153 the test passes and the output is: >> >> --- the date i put in : 2012-10-28 03:00:00.0 >> as millis : 1351382400000 >> --- the date i get back : 2012-10-28 03:00:00.0 >> as millis : 1351382400000 >> The difference is 0 seconds >> >> >> >> Using version 1.4.182 the test fails and the output is: >> >> >> --- the date i put in : 2012-10-28 03:00:00.0 >> as millis : 1351382400000 >> --- the date i get back : 2012-10-28 03:00:00.0 >> as millis : 1351386000000 >> The difference is -3600 seconds >> >> java.lang.AssertionError: >> Expected :0 >> Actual :-3600000 >> <Click to see difference> >> at org.junit.Assert.fail(Assert.java:88) >> at org.junit.Assert.failNotEquals(Assert.java:743) >> at org.junit.Assert.assertEquals(Assert.java:118) >> at org.junit.Assert.assertEquals(Assert.java:555) >> at org.junit.Assert.assertEquals(Assert.java:542) >> at >> com.avaje.tests.insert.TestSaveWithDaylightSavings.testDirect(TestSaveWithDaylightSavings.java:110) >> ... >> >> >> Is the test valid or perhaps there is some bug introduced? >> >> >> Thanks, Rob. >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "H2 Database" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to [email protected]. >> To post to this group, send email to [email protected]. >> Visit this group at http://groups.google.com/group/h2-database. >> For more options, visit https://groups.google.com/d/optout. >> > -- > You received this message because you are subscribed to a topic in the > Google Groups "H2 Database" group. > To unsubscribe from this topic, visit > https://groups.google.com/d/topic/h2-database/gYfGvxkNvaE/unsubscribe. > To unsubscribe from this group and all its topics, send an email to > [email protected]. > To post to this group, send email to [email protected]. > Visit this group at http://groups.google.com/group/h2-database. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at http://groups.google.com/group/h2-database. For more options, visit https://groups.google.com/d/optout.
