| From: | Jan Thomae <jan(at)smb-tec(dot)com> | 
|---|---|
| To: | pgsql-bugs(at)postgresql(dot)org | 
| Subject: | My Bug report: JDBC-Driver produces wrong output. | 
| Date: | 2000-11-02 10:56:06 | 
| Message-ID: | 00110212025700.00451@ramses | 
| Views: | Whole Thread | Raw Message | Download mbox | Resend email | 
| Thread: | |
| Lists: | pgsql-bugs | 
Hi,
I had a look over the JDBC-Driver and was able to remove the bug. It seems,
that the formatting of the timestamp caused the malfunction. I'd like to send
you my modifications, since you might be interested in them:
File: ResultSet.java 
Directory: src/interfaces/jdbc/org/postgresql/jdbc2 
  public Timestamp getTimestamp(int columnIndex) throws SQLException
  {
    String s = getString(columnIndex);
    if(s==null)
	return null;
    
    // This works, but it's commented out because Michael Stephenson's
    // solution is better still:
    // SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// Modification by Jan Thomae
    String sub = s.substring(s.length() - 3, s.length()-2);
    if (sub.equals("+") || sub.equals("-")) {
        s = s.substring(0, s.length()-3) + "GMT"+ s.substring(s.length()-3, s.length())+":00";
    }
// -------
    // Michael Stephenson's solution:
    SimpleDateFormat df = null;
// Modification by Jan Thomae
    if (s.length()>27) {
    df = new SimpleDateFormat("yyyy-MM-dd HH:mm:sszzzzzzzzz");  
    } else        
// -------
    if (s.length()>21 && s.indexOf('.') != -1) {
    df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSzzz");
    } else if (s.length()>19 && s.indexOf('.') == -1) {
	df = new SimpleDateFormat("yyyy-MM-dd HH:MM:sszzz");
    } else if (s.length()>19 && s.indexOf('.') != -1) {
	df = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss.SS");
    } else if (s.length()>10 && s.length()<=18) {
	df = new SimpleDateFormat("yyyy-MM-dd HH:MM:ss");
    } else {
	df = new SimpleDateFormat("yyyy-MM-dd");
    }
    
    try {
	return new Timestamp(df.parse(s).getTime());
    } catch(ParseException e) {
	throw new PSQLException("postgresql.res.badtimestamp",new Integer(e.getErrorOffset()),s);
    }
  }
Best regards,
Jan Thomae
--
____________________________________________________________________
Jan Thomae		                            jan(at)smb-tec(dot)com
SMB GmbH		                     http://www.smb-tec.com
| From | Date | Subject | |
|---|---|---|---|
| Next Message | pgsql-bugs | 2000-11-02 12:21:56 | LIKE(~~) OR regular pattern(~) deliver incomplete output | 
| Previous Message | pgsql-bugs | 2000-11-02 09:34:08 | JDBC-Driver produces wrong output. |