aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java13
-rw-r--r--src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java12
2 files changed, 23 insertions, 2 deletions
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java
index 1da1da67115..31bbaf2eece 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc1/PreparedStatement.java
@@ -388,8 +388,19 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
{
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone("GMT"));
+
+ // Make decimal from nanos.
+ StringBuffer decimal = new StringBuffer("000000000"); // max nanos length
+ String nanos = String.valueOf(x.getNanos());
+ decimal.setLength(decimal.length() - nanos.length());
+ decimal.append(nanos);
+ if (! connection.haveMinimumServerVersion("7.2")) {
+ // Because 7.1 include bug that "hh:mm:59.999" becomes "hh:mm:60.00".
+ decimal.setLength(2);
+ }
+
StringBuffer strBuf = new StringBuffer("'");
- strBuf.append(df.format(x)).append('.').append(x.getNanos() / 10000000).append("+00'");
+ strBuf.append(df.format(x)).append('.').append(decimal).append("+00'");
set(parameterIndex, strBuf.toString());
}
}
diff --git a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
index d5418bd1be7..49c5f2da804 100644
--- a/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
+++ b/src/interfaces/jdbc/org/postgresql/jdbc2/PreparedStatement.java
@@ -412,11 +412,21 @@ public class PreparedStatement extends Statement implements java.sql.PreparedSta
tl_tsdf.set(df);
}
+ // Make decimal from nanos.
+ StringBuffer decimal = new StringBuffer("000000000"); // max nanos length
+ String nanos = String.valueOf(x.getNanos());
+ decimal.setLength(decimal.length() - nanos.length());
+ decimal.append(nanos);
+ if (! connection.haveMinimumServerVersion("7.2")) {
+ // Because 7.1 include bug that "hh:mm:59.999" becomes "hh:mm:60.00".
+ decimal.setLength(2);
+ }
+
// Use the shared StringBuffer
synchronized (sbuf)
{
sbuf.setLength(0);
- sbuf.append("'").append(df.format(x)).append('.').append(x.getNanos() / 10000000).append("+00'");
+ sbuf.append("'").append(df.format(x)).append('.').append(decimal).append("+00'");
set(parameterIndex, sbuf.toString());
}