Skip site navigation (1) Skip section navigation (2)

Re: problem with dates when using a java calendar object with

From: Jair da Silva Ferreira Jr <j2(at)amazon(dot)com(dot)br>
To: pg(at)fastcrypt(dot)com
Cc: pgsql-jdbc(at)postgresql(dot)org, schabios(at)logi-track(dot)com
Subject: Re: problem with dates when using a java calendar object with
Date: 2004-10-18 12:57:00
Message-ID: 4173BD9C.1010908@amazon.com.br (view raw or flat)
Thread:
Lists: pgsql-jdbc
Dave Cramer wrote:

> Jair,
>
> When using the newer drivers, did you use setDate( ) with the 
> appropriate calendar object ?

    Yes, I am passing the Calendar object to the setDate() method.

>
> If you have test code, can you send it ?

    Yes, I have test code. It is attached in this email.

    Am I doing something wrong in my test code?

Thanks,
     Jair Jr

>
> Dave
>
> Jair da Silva Ferreira Jr wrote:
>
>> Hi Dave,
>>    Thanks for your reply.
>>
>> Dave Cramer wrote:
>>
>>> As Kris already pointed out you can use the calendar specified by 
>>> the user now; if you download the development driver.
>>
>>
>>
>>    I have used the following drivers in my test program: 
>> pg72jdbc2.jar, pgdev.306.jdbc2.jar and pgdev.306.jdbc3.jar. All of 
>> them presented the problem but with different time errors. The test 
>> results are above. I am using a DateFormat to print dates. The 
>> DateFormat object is appropriately configured for my timezone and 
>> calendar. Any other ideas? :-)
>>
>> Using driver: pg72jdbc2.jar
>> date (0) inserted: 16/10/04 00:00
>> date (1) inserted: 16/10/04 23:59
>> date (2) inserted: 16/10/04 08:00
>> date (3) inserted: 16/10/04 19:00
>> date (0) loaded: 15/10/04 17:00
>> date (1) loaded: 16/10/04 17:00
>> date (2) loaded: 15/10/04 17:00
>> date (3) loaded: 16/10/04 17:00
>>
>> Using driver: pgdev.306.jdbc2.jar
>> date (0) inserted: 16/10/04 00:00
>> date (1) inserted: 16/10/04 23:59
>> date (2) inserted: 16/10/04 08:00
>> date (3) inserted: 16/10/04 19:00
>> date (0) loaded: 15/10/04 10:00
>> date (1) loaded: 16/10/04 10:00
>> date (2) loaded: 15/10/04 10:00
>> date (3) loaded: 16/10/04 10:00
>>
>> Using driver: pgdev.306.jdbc3.jar
>> date (0) inserted: 16/10/04 00:00
>> date (1) inserted: 16/10/04 23:59
>> date (2) inserted: 16/10/04 08:00
>> date (3) inserted: 16/10/04 19:00
>> date (0) loaded: 15/10/04 10:00
>> date (1) loaded: 16/10/04 10:00
>> date (2) loaded: 15/10/04 10:00
>> date (3) loaded: 16/10/04 10:00
>>
>> Thanks,
>>    Jair Jr
>>
>>>
>>> Dave
>>>
>>> Jair da Silva Ferreira Jr wrote:
>>>
>>>> Hi Markus,
>>>>    Thank you very much for your reply.
>>>>
>>>> Markus Schaber wrote:
>>>>
>>>>> Hi, Jair,
>>>>>
>>>>> On Thu, 14 Oct 2004 11:41:21 -0300
>>>>> Jair da Silva Ferreira Jr <j2(at)amazon(dot)com(dot)br> wrote:
>>>>>
>>>>>  
>>>>>
>>>>>> My test table definition is: create table date_test (d date)
>>>>>> As you can see it is a date type, so there's no time zone 
>>>>>> information on it.
>>>>>> Do you think that the date not having time zone information is 
>>>>>> the source of the problem? If yes, what time zone should I use so 
>>>>>> that dates are correctly inserted and selected? UTC time zone? 
>>>>>> The default JVM timezone?
>>>>>>   
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> It is possible that this is the source of your problem.
>>>>>
>>>>> Table columns with time zone always remember the time zone of the 
>>>>> dates
>>>>> stored, while the table columns without time zone convert your 
>>>>> date to
>>>>> UTC and forget the original time zone.
>>>>>
>>>>> This had to be changed at postgres level. Just test whether manually
>>>>> inserting dates (e. G. via psql) and then re-reading works.
>>>>>  
>>>>>
>>>>    I inserted dates via pgsql and selected them via Java and the 
>>>> problem remains. I keep getting wrong days in my date. I think the 
>>>> JDBC driver is somehow considering the current jvm timezone to 
>>>> calculate dates. I think this is wrong because I am providing a 
>>>> user-defined Calendar exactly not to use the jvm default.
>>>>    I analysed the AbstractJdbc2Statement.java and 
>>>> AbstractJdbc2ResultSet.java source code and I noticed that the 
>>>> driver transforms the date in a String and them inserts it into the 
>>>> database. Maybe the problem is how the String is being generated. I 
>>>> think the best solution is to use a java.text.DateFormat object 
>>>> with the calendar specified by the user set on it. This DateFormat 
>>>> object could be used to both insert and select the date value from 
>>>> the database because it has a format(Date) and parse(Date) method. 
>>>> What do you think?
>>>>
>>>> Thanks,
>>>>    Jair Jr
>>>>
>>>>
>>>> ---------------------------(end of 
>>>> broadcast)---------------------------
>>>> TIP 2: you can get off all lists at once with the unregister command
>>>>    (send "unregister YourEmailAddressHere" to 
>>>> majordomo(at)postgresql(dot)org)
>>>>
>>>>
>>>
>>
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 9: the planner will ignore your desire to choose an index scan if 
>> your
>>      joining column's datatypes do not match
>>
>>
>


Attachment: JDBCTest2.java
Description: text/plain (4.3 KB)

In response to

pgsql-jdbc by date

Next:From: TomasDate: 2004-10-18 14:39:12
Subject: NullPointerException in ResultSetMetaData getColumnCount when using on a resultset from a stored function
Previous:From: Devrim GUNDUZDate: 2004-10-18 07:55:21
Subject: Initial translation : Turkish

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group