1

对不起,但我是菜鸟,我需要你的建议。我从 oracle 获得了一些带有 timestamptz 的结果集,我得到了这个 timestamptz 的字符串值,比如

2014-1-10 13.47.56.0 7:0

然后我需要将它放在 postgresql-request 中的某个函数中,该函数需要带时区的时间戳。如何在java中将此字符串转换为带有时区的时间戳?我试着做一些看起来像 TO_TIMESTAMP_TZ("2014-1-10 13.47.32.0 7:0","YYYY-MM-DD HH24:MI:SS.FF TZH:TZM")但它对我不起作用的东西。请帮帮我。

4

1 回答 1

2

我不知道TO_TIMESTAMP_TZ()Postgres 中的函数。你可能的意思是to_timestamp()

我也不知道模板模式TZH:TZM。您可以使用该AT TIME ZONE构造。

数据用单引号引起来;双引号用于标识符。

这对我有用:

SELECT to_timestamp('2014-1-10 13.47.32.0', 'YYYY-MM-DD HH24:MI:SS.MS')::timestamp
       AT TIME ZONE '-7:0';  -- shift back

在 Oracle 中使用 (time zone region) 以 ISO 8601 格式输出时间戳会更智能TZR,这样不那么含糊。Oracle 手册中的详细信息。

或者更好的是,UTC 时间戳(没有0偏移),您可以timestamptz直接在 Postgres 中转换:

SELECT '2014-01-10 06:47:32+0'::timestamptz;

或者 UNIX 纪元,可以馈送到to_timestamp().

SELECT to_timestamp(1389336452);

Postgres 中时间戳的详细信息:

于 2014-08-11T10:26:03.027 回答