diff options
author | Bruce Momjian <bruce@momjian.us> | 2001-05-30 16:34:49 +0000 |
---|---|---|
committer | Bruce Momjian <bruce@momjian.us> | 2001-05-30 16:34:49 +0000 |
commit | 4d84b7a10f9f78dcedaf9fc495d23a54da38458d (patch) | |
tree | 7c3def09880c1c5fa5eaeb6b791a894ea2fca3f0 /src | |
parent | 5b42666fd93ac4a1bdde7a84d90e3f9879799709 (diff) | |
download | postgresql-4d84b7a10f9f78dcedaf9fc495d23a54da38458d.tar.gz postgresql-4d84b7a10f9f78dcedaf9fc495d23a54da38458d.zip |
I just got bitten by this too. I use type timestamp in the
database, and often need the latest timestamp, but want to
format it as a date. With 7.0.x, I just
select ts from foo order by ts desc limit 1
and in java: d = res.getDate(1);
but this fails everywhere in my code now :(
http://java.sun.com/j2se/1.3/docs/guide/jdbc/spec/jdbc-spec.frame7.html
says
The ResultSet.getXXX methods will attempt to
convert whatever SQL type was returned by the
database to whatever Java type is returned by
the getXXX method.
Palle Girgensohn
Diffstat (limited to 'src')
-rw-r--r-- | src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java index 2928ab969b3..81605deec8e 100644 --- a/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java +++ b/src/interfaces/jdbc/org/postgresql/jdbc2/ResultSet.java @@ -423,8 +423,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu String s = getString(columnIndex); if(s==null) return null; - - return java.sql.Date.valueOf(s); + // length == 10: SQL Date + // length > 10: SQL Timestamp, assumes PGDATESTYLE=ISO + try { + return java.sql.Date.valueOf((s.length() == 10) ? s : s.substring(0,10)); + } catch (NumberFormatException e) { + throw new PSQLException("postgresql.res.baddate", s); + } } /** @@ -441,8 +446,13 @@ public class ResultSet extends org.postgresql.ResultSet implements java.sql.Resu if(s==null) return null; // SQL NULL - - return java.sql.Time.valueOf(s); + // length == 8: SQL Time + // length > 8: SQL Timestamp + try { + return java.sql.Time.valueOf((s.length() == 8) ? s : s.substring(11,19)); + } catch (NumberFormatException e) { + throw new PSQLException("postgresql.res.badtime",s); + } } /** |