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.

Reply via email to