Re: getDate() and getTime() fails with columns of type 'TimeStamp' - Mailing list pgsql-jdbc

From Bruce Momjian
Subject Re: getDate() and getTime() fails with columns of type 'TimeStamp'
Date
Msg-id 200105301635.f4UGZfo08370@candle.pha.pa.us
Whole thread Raw
In response to getDate() and getTime() fails with columns of type 'TimeStamp'  (Michael Stephenson <mstephenson@tirin.openworld.co.uk>)
List pgsql-jdbc
I just applied this patch sent in by someone else to the current CVS
tree.

>
> In org.postgresql.jdbc2.ResultSet, both getDate() and getTime() fail on
> columns of type 'timestamp', which is against the jdbc spec, patch below
> fixes it.
>
> Michael Stephenson      mstephenson@openworld.co.uk
> Developer   -    Web Applications    -   Open World
> Tel: +44 1225 444 950         Fax: +44 1225 336 738
>
>
>
> --- ResultSet.java.old    Wed May 30 16:32:48 2001
> +++ ResultSet.java    Wed May 30 16:41:33 2001
> @@ -423,6 +423,8 @@
>      String s = getString(columnIndex);
>      if(s==null)
>        return null;
> +    if (s.length() > 10)
> +    return new java.sql.Date(getTimeStamp(columnIndex).getTime())
>
>      return java.sql.Date.valueOf(s);
>    }
> @@ -441,6 +443,8 @@
>
>      if(s==null)
>        return null; // SQL NULL
> +    if (s.length() > 8)
> +    return new java.sql.Time(getTimeStamp(columnIndex).getTime());
>
>      return java.sql.Time.valueOf(s);
>    }
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

--
  Bruce Momjian                        |  http://candle.pha.pa.us
  pgman@candle.pha.pa.us               |  (610) 853-3000
  +  If your life is a hard drive,     |  830 Blythe Avenue
  +  Christ can be your backup.        |  Drexel Hill, Pennsylvania 19026
--- src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java~    Fri Feb 23 19:12:23 2001
+++ src/interfaces/jdbc/org/postgresql/jdbc1/ResultSet.java    Wed May  9 04:31:11 2001
@@ -423,8 +423,13 @@
     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 @@

     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);
+    }
   }

   /**

pgsql-jdbc by date:

Previous
From: Bruce Momjian
Date:
Subject: Re: Re: [INTERFACES] Trouble with JDBC2 ResultSet.getDate()
Next
From: Larry Mulcahy
Date:
Subject: "No class found for inet"