如何在查询to_timestamp Postgresql中删除TimeZone

时间:2016-02-26 02:17:46

标签: sql postgresql postgresql-9.1

我在Postgresql中找到了,我想在查询中删除+9 UTC值。

例如:在to_timestamp列中,我想删除+09,并且仅保留2016-02-26 00:23:44值。

这是我的疑问:

select t,to_timestamp(v) from c1.hour where f = 22 and date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' order by t ;

这是我的结果: enter image description here

当我没有使用to_timestamp时,这是我的结果: enter image description here

我可以得到一些帮助吗?

3 个答案:

答案 0 :(得分:8)

使用to_char()函数将timestamp格式化为任何所需的字符串表示形式。例如:

SELECT to_char(now(), 'YYYY-MM-DD HH24:MI:SS')

将返回2016-02-26 09:37:49(没有时区)

您的查询必须是:

SELECT t, to_char(to_timestamp(v), 'YYYY-MM-DD HH24:MI:SS') 
FROM c1.hour 
WHERE 
   f = 22 
   AND date_trunc('day',t - '1 hour'::INTERVAL) = '2016-02-26 00:00:00' 
ORDER BY t ;

答案 1 :(得分:2)

指定UTC:

select to_timestamp(0)::timestamptz at time zone 'UTC'

我在时区+08并获得以下结果:

  

1970-01-01 00:00:00

根据时区规范,我得到:

  

1970-01-01 08:00:00 + 08

一个优点是您不必指定日期时间格式,这可能会导致用户意外结果。保留系统指定的格式。

答案 2 :(得分:0)

你可以这样做 cast("your column" as timestamp)