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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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 Content-Type Size
JDBCTest2.java text/plain 4.3 KB

In response to

Browse pgsql-jdbc by date

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