抱歉,但我是菜鸟,我需要你的建议。 我有一些来自oracle with 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")
但它对我没有用。请帮帮我。
答案 0 :(得分:1)
我不知道Postgres中的函数TO_TIMESTAMP_TZ()
。你可能意思是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中输出带有TZR
(时区区域)的ISO 8601格式的时间戳会更加明智,这一点不那么模糊。 Details in the Oracle manual.
或者更好的是,UTC时间戳(没有0
偏移量),您可以直接在Postgres中转换为timestamptz
:
SELECT '2014-01-10 06:47:32+0'::timestamptz;
或UNIX时期,可以提供给to_timestamp()
的第二种形式。
SELECT to_timestamp(1389336452);
Postgres中有关时间戳的详细信息: