【发布时间】:2012-05-20 07:28:16
【问题描述】:
如何使用 Java 和 JDBC 将时间戳数组传递给 Postgres 函数?
这是函数的签名:
CREATE OR REPLACE FUNCTION getlistcount(_id integer, _subs text, _download_array timestamp without time zone[], _filter integer, _fault text) RETURNS refcursor AS...
这是创建数组的 Java 代码:
GregorianCalendar[] dataDownloads =
downloadTimes.toArray(new GregorianCalendar[downloadTimes.size()]);
Array sqlArray = conn.createArrayOf("timestamp", dataDownloads);
cstmt.setArray(4, sqlArray);
downloadTimes 是传递给 Java 函数的 List。
提示:我们需要将时间与日期连接起来,根据Postgres documentation。
【问题讨论】:
-
我看到您使用的是
TIMESTAMP WITHOUT TIME ZONE。在几乎所有用例中,TIMESTAMP WITH TIME ZONE更好;它代表一个实际的时刻,而另一个不代表。 -
@KGrittn,这是有道理的。我们从下载时间(见下文)获取时区,用时间戳保存时区。谢谢!
标签: java postgresql jdbc postgresql-9.1