提交 13123c07 authored 作者: Evgenij Ryazanov's avatar Evgenij Ryazanov

Adjust nanoseconds in PgServer

上级 899ffe76
...@@ -625,14 +625,17 @@ public class PgServerThread implements Runnable { ...@@ -625,14 +625,17 @@ public class PgServerThread implements Runnable {
writeInt(8); writeInt(8);
long m = t.getTime(); long m = t.getTime();
m += TimeZone.getDefault().getOffset(m); m += TimeZone.getDefault().getOffset(m);
m = toPostgreSeconds(m);
int nanos = t.getNanos();
if (m < 0 && nanos != 0) {
m--;
}
if (INTEGER_DATE_TYPES) { if (INTEGER_DATE_TYPES) {
// long format // long format
m = toPostgreSeconds(m); m = m * 1000000 + nanos / 1000;
m = m * 1000000 + t.getNanos() / 1000;
} else { } else {
// double format // double format
m = toPostgreSeconds(m); m = Double.doubleToLongBits(m + nanos * 0.000000001);
m = Double.doubleToLongBits(m + t.getNanos() * 0.000000001);
} }
writeInt((int) (m >>> 32)); writeInt((int) (m >>> 32));
writeInt((int) m); writeInt((int) m);
......
...@@ -473,9 +473,15 @@ public class TestPgServer extends TestBase { ...@@ -473,9 +473,15 @@ public class TestPgServer extends TestBase {
stat.execute( stat.execute(
"create table test(x1 date, x2 time, x3 timestamp)"); "create table test(x1 date, x2 time, x3 timestamp)");
Date[] dates = { null, Date.valueOf("2017-02-20") }; Date[] dates = { null, Date.valueOf("2017-02-20"),
Time[] times = { null, Time.valueOf("14:15:16") }; Date.valueOf("1970-01-01"), Date.valueOf("1969-12-31"),
Timestamp[] timestamps = { null, Timestamp.valueOf("2017-02-20 14:15:16.763") }; Date.valueOf("1940-01-10"), Date.valueOf("1950-11-10") };
Time[] times = { null, Time.valueOf("14:15:16"),
Time.valueOf("00:00:00"), Time.valueOf("23:59:59"),
Time.valueOf("00:10:59"), Time.valueOf("08:30:42") };
Timestamp[] timestamps = { null, Timestamp.valueOf("2017-02-20 14:15:16.763"),
Timestamp.valueOf("1970-01-01 00:00:00"), Timestamp.valueOf("1969-12-31 23:59:59"),
Timestamp.valueOf("1940-01-10 00:10:59"), Timestamp.valueOf("1950-11-10 08:30:42.12") };
int count = dates.length; int count = dates.length;
PreparedStatement ps = conn.prepareStatement( PreparedStatement ps = conn.prepareStatement(
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论