Обсуждение: JDBC and Timestamps
I'm working on a project where I update/insert/select records through JDBC and I'm noticing problems with the timestamp fields. The JDBC driver when writing a Timestamp value to postgres is passing the value to the backend as a String in the following format "yyyy-mm-dd hh:mm:ss.fffffffff" <-- the last part .fffffffff is nanosecs. When Postgres reads this is things it is millisecs so converts it and appends the timezone. Now when the JDBC driver reads the value back in it is trying to do a date conversion from a string using the format "yyyy-mm-dd hh:mm:sszzz" which has timezone but no millisecs. The different formats of course cause exceptions to be generated. I tried using the setLenient(true) but this didn't make any difference. Chris Ryan
This should already be fixed in cvs. Peter -- Peter Mount Enterprise Support Maidstone Borough Council Any views stated are my own, and not those of Maidstone Borough Council -----Original Message----- From: Chris Ryan [mailto:chris@greatbridge.com] Sent: Saturday, August 05, 2000 1:26 PM To: pgsql-interfaces@postgresql.org Subject: [INTERFACES] JDBC and Timestamps I'm working on a project where I update/insert/select records through JDBC and I'm noticing problems with the timestamp fields. The JDBC driver when writing a Timestamp value to postgres is passing the value to the backend as a String in the following format "yyyy-mm-dd hh:mm:ss.fffffffff" <-- the last part .fffffffff is nanosecs. When Postgres reads this is things it is millisecs so converts it and appends the timezone. Now when the JDBC driver reads the value back in it is trying to do a date conversion from a string using the format "yyyy-mm-dd hh:mm:sszzz" which has timezone but no millisecs. The different formats of course cause exceptions to be generated. I tried using the setLenient(true) but this didn't make any difference. Chris Ryan
> ... I'm noticing problems with the timestamp fields. The JDBC > driver when writing a Timestamp value to postgres is passing the value > to the backend as a String in the following format "yyyy-mm-dd > hh:mm:ss.fffffffff" <-- the last part .fffffffff is nanosecs. Do you actually need nanosecond (or sub-microsecond) resolution? At the moment, Postgres rounds internal values *and* truncates printed results to avoid accumulating internal roundoff errors. But I did that pretty conservatively, rather than actually testing to see if it could carry more precision. If you want to test with more precision, we could try some variations... - Thomas
Dear all, Can some one let me know how I can be removed from this mailing list? Regards Geoff ----- Original Message ----- From: Chris Ryan <chris@greatbridge.com> To: <pgsql-interfaces@postgresql.org> Sent: Saturday, August 05, 2000 10:26 PM Subject: [INTERFACES] JDBC and Timestamps > I'm working on a project where I update/insert/select records through > JDBC and I'm noticing problems with the timestamp fields. The JDBC > driver when writing a Timestamp value to postgres is passing the value > to the backend as a String in the following format "yyyy-mm-dd > hh:mm:ss.fffffffff" <-- the last part .fffffffff is nanosecs. When > Postgres reads this is things it is millisecs so converts it and appends > the timezone. Now when the JDBC driver reads the value back in it is > trying to do a date conversion from a string using the format > "yyyy-mm-dd hh:mm:sszzz" which has timezone but no millisecs. The > different formats of course cause exceptions to be generated. I tried > using the setLenient(true) but this didn't make any difference. > > Chris Ryan >